精华内容
下载资源
问答
  • 微信小程序获取用户openId 前端: [javascript] view plain copy print?在CODE上查看代码片派生到我的代码片 wx.login({   success: function (res) {   res.code   }) 复制代码 获取到code后,传到后台, ...
  • 微信小程序获取用户openid

    万次阅读 多人点赞 2018-03-26 17:12:53
    1、wx.login(OBJECT) 调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid) 及本次登录的 会话密钥(session_key)。用户数据的加解密通讯需要依赖会话密钥完成。2、code 换取 ...

    1、wx.login(OBJECT)

       调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid) 及本次登录的 会话密钥(session_key)。用户数据的加解密通讯需要依赖会话密钥完成。

    2、code 换取 session_key

    ​  这是一个 HTTPS 接口,开发者服务器使用登录凭证 code 获取 session_key 和 openid。其中 session_key 是对用户数据进行加密签名的密钥。为了自身应用安全,session_key 不应该在网络上传输。
    接口地址:
    https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

    详细的介绍请看小程序APIhttps://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html#wxloginobject

    3、获取用户openid实例

    //app.js
    App({
        globalData:{
            appid:'1wqas2342dasaqwe2323424ac23qwe',//appid需自己提供,此处的appid我随机编写
            secret:'e0dassdadef2424234209bwqqweqw123ccqwa',//secret需自己提供,此处的secret我随机编写
    
        },
        onLaunch: function () {
         var that = this
         var user=wx.getStorageSync('user') || {};  
         var userInfo=wx.getStorageSync('userInfo') || {}; 
         if((!user.openid || (user.expires_in || Date.now()) < (Date.now() + 600))&&(!userInfo.nickName)){ 
            wx.login({  
            success: function(res){ 
                if(res.code) {
                    wx.getUserInfo({
                        success: function (res) {
                            var objz={};
                            objz.avatarUrl=res.userInfo.avatarUrl;
                            objz.nickName=res.userInfo.nickName;
                            //console.log(objz);
                            wx.setStorageSync('userInfo', objz);//存储userInfo
                        }
                    });
                    var d=that.globalData;//这里存储了appid、secret、token串  
                    var l='https://api.weixin.qq.com/sns/jscode2session?appid='+d.appid+'&secret='+d.secret+'&js_code='+res.code+'&grant_type=authorization_code';  
                    wx.request({  
                        url: l,  
                        data: {},  
                        method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT  
                        // header: {}, // 设置请求的 header  
                        success: function(res){ 
                            var obj={};
                            obj.openid=res.data.openid;  
                            obj.expires_in=Date.now()+res.data.expires_in;  
                            //console.log(obj);
                            wx.setStorageSync('user', obj);//存储openid  
                        }  
                    });
                }else {
                    console.log('获取用户登录态失败!' + res.errMsg)
                }          
            }  
          }); 
        } 
       },
    })


    展开全文
  • 主要介绍了微信小程序获取用户openId的实现方法的相关资料,需要的朋友可以参考下
  • 主要介绍了微信小程序获取用户openid的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 微信小程序获取用户openid源码(前后端).rar
  • 以前的文章中写过微信小程序获取用户openid的。《微信小程序开发(四)获取用户openid》。当时的后端框架用的是Express,请求工具用的request。这次还是同样的主题,只是后端框架使用的Egg.js,请求工具用的自带的...

    以前的文章中写过微信小程序获取用户openid的。《微信小程序开发(四)获取用户openid》。当时的后端框架用的是Express,请求工具用的request。这次还是同样的主题,只是后端框架使用的Egg.js,请求工具用的自带的httpclient模块。
    业务流程上没什么差异,这里也不做两个框架和模块的差异对比,只是以一个实际的场景使用来展示。
    httpclient模块介绍
    小程序开发文档
    先仔细看看文档。

    后端代码

    'use strict';
    
    const Controller = require('egg').Controller;
    
    // https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html
    const wxConfig = {
      appid: 'wx******************8',
      appSecret: '91*******************f'
    }
    
    class WxMinniController extends Controller {
      // 获取用户openid
      // 通过 wx.login 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程
      async openid() {
        const { ctx } = this;
        const urlStr = 'https://api.weixin.qq.com/sns/jscode2session'
        const data = {
          appid: wxConfig.appid,           // 小程序 appId
          secret: wxConfig.appSecret,      // 小程序 appSecret
          js_code: ctx.query.code,         // 登录时获取的 code
          grant_type: 'authorization_code' // 授权类型,此处只需填写 authorization_code
        }
        const result = await ctx.curl(urlStr, {
          data: data,
          dataType: 'json',
        });
        if(result.data.errmsg){
          ctx.body = {
            status: 101,
            msg: '操作失败',
            errcode: result.data.errcode,
            errmsg: result.data.errmsg
          };
          /*
            errcode: 40163
            errmsg: "code been used, hints: [ req_id: NfjCxzNre- ]"
            msg: "操作失败"
            status: 101
           */
        }else{
          ctx.body = {
            status: 100,
            msg: '操作成功',
            openid: result.data.openid,
            session_key: result.data.session_key
          };
          /*
            msg: "操作成功"
            openid: "oC4Dk5NfT-I-joYZGQSPHOpD2PYQ"
            session_key: "Qheu52JzXVhZuAK372micw=="
            status: 100
          */
        }
      }
    }
    module.exports = WxMinniController;
    
    

    小程序端

    wx.login({
        success (res) {
          wx.request({
            url: 'http://localhost:7001/wxmini/openid', 
            data: {
              // code: res.code
              code: '021J2usK0lrC0a2t5vrK0aMCsK0J2usw'
            },
            success (res) {
              console.log('openid = ', res.data.openid)
            }
          })
        },
        fail (err){
    
        }
      })
    

    总结

    这里只是httpclient模块的一个简单使用,没什么还说的,看文档什么都会了。
    关于微信获取openid,做过微信JSSDK和APP的SDK的都知道,其实都是一个流程。
    这里就是以一个实际的场景来简单使用下httpclient模块。

    展开全文
  • 微信小程序获取用户OpenID(极简版、可复现),后端springboot 什么是OpenID 微信小程序OpenID,就代表每个用户的身份证号一样的唯一标识。我们不知道某个人的情况下,可通过OpenID来进行查询某个用户,当然OpenID不是...

    微信小程序获取用户OpenID(极简版、可复现),后端springboot

    什么是OpenID

    微信小程序OpenID,就代表每个用户的身份证号一样的唯一标识。我们不知道某个人的情况下,可通过OpenID来进行查询某个用户,当然OpenID不是我们自己生成的,而是前端通过微信提供的API wx.login({})得到一个code,再拿这个code去调用我们自己后台的接口,通过后端的接口获得到这个code,再去调用微信的方法(微信提供的公用API),获取到sessionKey,OpenID。

    为什么要获取OpenID

    有了OpenID,我们就可以直接用微信登录,把这个OpenID设置为用户表的主键,直接用微信的OpenID和我们的项目进行关联。用户表中查到OpenID,就说明已经注册过,直接返回信息进入。无,则可以跳转注册,补充一些我们用户表需要的其他字段。

    原理图

    在这里插入图片描述
    (原理的流程很清楚)

    步骤和代码

    1、(无需更改)小程序的js,通过wx.request()发送code.

      onLoad: function () {
      var that = this;
        wx.login({
          success (res) {
            if (res.code) {
              wx.request({
                url:"http://localhost/wx/code",
                data: {
                  code: res.code
                },
                success: function (res) {
                  console.log(res.data.openid)     
              that.setData({
                openid:res.data.openid
              })
                }
              })
              console.log('登录成功!code码:' +res.code)
            } else {
              console.log('登录失败!' + res.errMsg)
            }
          }
        })
      },
    

    这里是我的接口: url:“http://localhost/wx/code”

    2、(该)编写后端接口 WxappCode2Session

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.util.Assert;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.client.RestTemplate;
    import java.util.HashMap;
    import java.util.Map;
    @RestController
    @RequestMapping("wx")
    public class WxappCode2Session {
        @Autowired
        private RestTemplate restTemplate;//在util中有配置
        @GetMapping("code")
        @ResponseBody
        public  String code2session(String code) {
            // 调用接口
            String url = "https://api.weixin.qq.com/sns/jscode2session?appid={appid}&secret={secret}&js_code={code}&grant_type=authorization_code";
            Map<String, String> paramMap = new HashMap<>();
            paramMap.put("appid", "-------------你的appid------------");
            paramMap.put("secret", "------------你的secret-----------");
            paramMap.put("code", code);
    
            String result = this.restTemplate.getForObject(url, String.class, paramMap);
            System.out.println(result);
            return result;
        }
    }
    
    

    改一下,你的appid和secret,在你的微信开放平台的,开发设置里面
    paramMap.put(“appid”, “-------------你的appid------------”);
    paramMap.put(“secret”, “------------你的secret-----------”);

    在WxappCode2Session的接口里面我们调用了微信服务器的开放接口,使用了 RestTemplate的方法。所以就要创建这个类的配置类 RestTemplateConfig。你可以创建在任何位置,内容完全照搬即可。
    RestTemplateConfig(无需更改)

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.client.RestTemplate;
    @Configuration
    public class RestTemplateConfig {
        @Bean
        public RestTemplate getRestTemplate() {
            return new RestTemplate();
        }
    }
    

    3、结果

    前端在这里插入图片描述
    后端
    在这里插入图片描述

    总结

    写的很简陋,是可以复现的,有问题留言,

    展开全文
  • 微信小程序需要获取用户的openid来作为用户的唯一身份认证,用来存储和更新对应客户信息。 以Node后台为例, 前台发出请求后,后台转发访问对应的微信接口来获取openid. 1. 小程序前端请求: getUserInfo: ...

    微信小程序需要获取用户的openid来作为用户的唯一身份认证,用来存储和更新对应客户信息。 以Node后台为例, 前台发出请求后,后台转发访问对应的微信接口来获取openid.

    1. 小程序前端请求:

    getUserInfo: function(e) {
      app.globalData.userInfo = e.detail.userInfo
        this.setData({
          userInfo: e.detail.userInfo,
          hasUserInfo: true
        })
        wx.login({
          success: res => {
            app.globalData.usercode = res.code    //1. 获取usercode作为后面获取openid的参数
          }
        })
    
          var id=null
        id=wx.getStorageSync('openid')
        if (!id)
        {
    
          wx.request({
            url: getOpenId, //set in config .js  //2.后台API
            method: "POST",
            data: {
              js_code: app.globalData.usercode,
            }, success(res) {
              var openId = res.data.openid
              var sessionKey = res.data.session_key
              console.log(res)
              wx.setStorageSync("openid", openId)
              app.globalData.openId = openId
              if (!!openId) {      //3.获取到openid后的处理,可以依照自己的逻辑写
                app.globalData.openId = openId
                wxlogin(openId)
              }
            }
          })
        }
    
        
      }
    })

    2. Node JS 后台获取openid:

    router.post('/wxgetOpenId', function (req, res, next) {  
      var data=req.body
      var APP_URL='https://api.weixin.qq.com/sns/jscode2session'
      var APP_ID='wxXXXXXXXXX'   //小程序的app id ,在公众开发者后台可以看到
      var APP_SECRET='8ad6f0XXXXXXXXXXXX'  //程序的app secrect,在公众开发者后台可以看到
    
      var resData=null 
      var thisRes=res
      if(!!data.js_code)
      {
     
        request(`${APP_URL}?appid=${APP_ID}&secret=${APP_SECRET}&js_code=${data.js_code}&grant_type=authorization_code`, (error, response, body)=>{
          console.log('statusCode:', response && response.statusCode)
          console.log(body)
          res.end(body)})
     
      }
    })

     

     
     

     

    转载于:https://www.cnblogs.com/Aaron-Lee/p/11374651.html

    展开全文
  • 微信小程序获取用户OpenId——Java

    千次阅读 2018-03-17 20:04:39
    这几天接触到微信小程序的开发,对于新的技术多多少少会遇到一些困难,对于新手来说,第一道坎显然就是如何获取用户OpenId。首先祭出这张图通过官方API可以知道,如果需要获得用户OpenId,需要appid+appsecret+...
  • 微信小程序获取用户openid-亲测可用

    千次阅读 热门讨论 2019-02-27 11:18:32
     调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid) 及本次登录的 会话密钥(session_key)。用户数据的加解密通讯需要依赖会话密钥完成。 2、code 换取 session_key ​ 这是一...
  • 小程序前端 app.js wx.login({ success: res => { // 发送 res.code 到后台换取 openId, sessionKey, unionId if(res.code){ wx.getUserInfo({ success: function(res_...
  • 1.个人开发者是获取不到OpenId:之前测试一直拿不到,读者可以试一下。 2.获取的代码和输出: //app.js App({ globalData: { appid: 'wx62a1hh8cfc28fdb',//appid需自己提供,此处的appid我随机编写 secret: '...
  • 最近做微信小程序,要做一个排行榜的功能,摸索了一天,终于找到获取用户openid,昵称和头像方法。 先上wxml: <button bindtap="getInfo">test</button> <view>{{nickname}}</view> <...
  • 百度上说的都差不多,关键点都是随便讲一下,还有就是直接复制别人的,反正我是没怎么看明白 我记录一下自己大概写的...微信提供的接口: https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=S...
  • 主要介绍了微信小程序 获取微信OpenId详解及实例代码的相关资料,需要的朋友可以参考下
  • 微信小程序获取获取openid

    千次阅读 2017-11-17 12:24:49
    之前看很多获取openid都是直接在小程序里面获取的 但是现在不能在小程序里面讲获取...微信小程序代码 /** * 生命周期函数--监听页面加载 * 微信获取openid */ onLoad: function (options) { wx.login({ succes
  • 主要介绍了微信小程序如何获取openid用户信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • java解析的源码和小程序的源码,自己从项目中剥离出来的,肯定能用,有疑问私信,微信小程序获取各类信息(openid、session_key以及用户基本信息、解密手机号)
  • 微信小程序获取openid.pdf

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,852
精华内容 4,740
关键字:

微信小程序获取用户openid

微信小程序 订阅