- 调用
wx.login()
得到用户临时登录凭证code
,该code
是动态值,不能作为用户唯一标识 - 调用
auth.code2Session
接口,换取 用户唯一标识 openid 和 会话密钥 session_key,其中的openid
就是我们需要的用户唯一id
- 小程序端代码示例
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)
}
},
})
- 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()
})
- 此时前端就可以得到 node 返回的数据,格式如下
属性 类型 说明
openid string 用户唯一标识
session_key string 会话密钥
- 完成,拿到 openid 后,存储到 globalData 或其它地方,在需要的时候可以随时发给后台
本文完成于2020年5月,经测试可行,仅供参考
网友评论