小程序开发时, 用户使用小程序须要受权, 这时就要用到openid进行绑定这个用户。openid是指这个用户在某一个小程序中受权后的惟一标识(好比你的身份证)
1. 获取code值
通过uni.login()接口(同理wx.login), 拿到用户的code值(5分钟后失效)
hqCode() {
// 获取登录凭证 code
uni.login({
provider: 'weixin',
success: res => {
this.code = res.code
}
});
},
企业级开发,前端代码就是获取uni.login()获取code,并将code传给后端换取openid即可。
前端也可以独立获取openid,不过我个人感觉没什么作用。
2. 获取openid
使用uniapp中的 uni.request,即可实现。
uni.request({
url: 'https://api.weixin.qq.com/sns/jscode2session',
method: 'GET',
data: {
appid: 'xxxxxxx', //你的小程序的APPID
secret: 'xxxxxxxxxxx', //你的小程序的secret,
js_code: this.code, //wx.login 登录成功后的code
grant_type: 'authorization_code',
},
success: (cts) => {
// 换取成功后 暂存这些数据 留作后续操作
this.openId = cts.data.openid //openid 用户唯一标识
this.unionid = cts.data.unionid //unionid 开放平台唯一标识 当公众号和小程序同时登录过才会有
this.session_key = cts.data.session_key //session_key 会话密钥
console.log(cts)
}
})
里面的 app ID 和 secret 密钥在微信开发者工具中可以获取到。
微信开发者工具地址
3. 完整代码
login() {
// 获取登录凭证 code
uni.login({
provider: 'weixin',
success: res => {
this.code = res.code
uni.request({
url: 'https://api.weixin.qq.com/sns/jscode2session',
method: 'GET',
data: {
appid: 'xxxxxxxx', //你的小程序的APPID
secret: 'xxxxxxxxxxx', //你的小程序的secret,
js_code: this.code, //wx.login 登录成功后的code
grant_type: 'authorization_code',
},
success: (cts) => {
// 换取成功后 暂存这些数据 留作后续操作
this.openId = cts.data.openid //openid 用户唯一标识
this.unionid = cts.data.unionid //unionid 开放平台唯一标识 当公众号和小程序同时登录过才会有
this.session_key = cts.data.session_key //session_key 会话密钥
console.log(cts)
}
})
}
});
},
成功后就会返回openid