小程序获取openid和unionid

2018-01-15  本文已影响270人  瓜田猹

通过调用wx.login获取code,调用 wx.getUserInfo获取encryptedData和iv

 getUserInfo(cb){
      wx.login({
        success: log_res => {
          wx.getUserInfo({
            withCredentials:true,
            success:res_user => {
              if(log_res.code){
              //调用以下方法
                getTocken(log_res.code,res_user.encryptedData,res_user.iv);
              }else {
                console.log('获取用户登录态失败!'+log_res.errMsg)
              }
            }
       })
    }
})
  
function getTocken(code,encryptedData,iv){
    Promisify.httpsPromisify(wx.request)({
      url: '  ',
      header: {
        "Content-Type":"application/x-www-form-urlencoded"
      },
      method:'GET',
      data:{
        code:code,
        encryptedData:encryptedData,
        iv:iv
      }
    }).then(function (res) {
      console.log(res)
      wx.setStorageSync('tocken', res.tocken)
    }.bind(this))  
}

提供的code+appid+appsecrect的获取以下信息

(
    [session_key] => xxxxxxx
    [expires_in] =>xxxxx
    [openid] => xxxxxxxx
    [unionid] => xxxxxxxx
)

服务器通过解密 encryptData 得到如下数据:

  {
    "openId": "OPENID",
    "nickName": "NICKNAME",
    "gender": GENDER,
    "city": "CITY",
    "province": "PROVINCE",
    "country": "COUNTRY",
    "avatarUrl": "AVATARURL",
    "unionId": "UNIONID",
    "watermark":
    {
        "appid":"APPID",
        "timestamp":TIMESTAMP
    }
}
上一篇下一篇

猜你喜欢

热点阅读