微信小程序+nodejs获取用户唯一id的详细过程

2020-05-29  本文已影响0人  前端巴士
  1. 调用 wx.login() 得到用户临时登录凭证 code,该 code 是动态值,不能作为用户唯一标识
  2. 调用 auth.code2Session 接口,换取 用户唯一标识 openid会话密钥 session_key,其中的 openid 就是我们需要的用户唯一id
  3. 小程序端代码示例
wx.login({
      complete: (res) => {
        if (res.code) {
          wx.request({
            url: 'http://192.168.1.113:3000/api/user/wx-login',
            data: {
              code: res.code
            },
            success: r => {
              console.log(r.data)
            }
          })
        } else {
          console.log('登录失败' + res.errMsg)
        }
      },
    })
  1. nodejs 后端代码示例
var https = require('https')
// ...
router.get('/wx-login', function(req, res) {
  const { code } = req.query
  let url = 'https://api.weixin.qq.com/sns/jscode2session?appid=wx46c2c63de1e****7&secret=73365****e4c6eb47878f6830d4d28c4&js_code='+code+'&grant_type=authorization_code'
  let r = https.request(url, function(res2) {
    res2.setEncoding('utf-8');
    res2.on('data', function (chunk) {  
      var data = JSON.parse(chunk)
      res.send(data)
    })
  })
  r.end()
})
  1. 此时前端就可以得到 node 返回的数据,格式如下
属性  类型  说明
openid  string  用户唯一标识
session_key string  会话密钥
  1. 完成,拿到 openid 后,存储到 globalData 或其它地方,在需要的时候可以随时发给后台

本文完成于2020年5月,经测试可行,仅供参考

上一篇下一篇

猜你喜欢

热点阅读