关键点在于uni.login所获取的code与获取用户信息(iv,encryptedData)先后问题,解决方案就是在获取用户信息之后再获取code一并提交服务器进行解密!
<button class="auth-item" open-type="getUserInfo" @getuserinfo="bindGetUserInfo">
bindGetUserInfo(u) {
const _this = this;
if ('getUserInfo:ok' != u.detail.errMsg) {
_this.er('获取用户信息失败');
return false;
}
//login之后再获取用户信息,不然会解密偶发失败
uni.login({
provider: 'weixin',
complete(e) {
if ('login:ok' != e.errMsg) {
_this.er('获取用户登录状态失败');
return false;
}
//获取用户信息
uni.getUserInfo({
complete(userInfo) {
if ('getUserInfo:ok' != userInfo.errMsg) {
_this.er('获取用户信息失败');
return false;
}
//这里把数据提交给服务器解密
_this.wxSendLogin({
iv: encodeURI(userInfo.iv),
code: encodeURI(e.code),
encryptedData: encodeURI(userInfo.encryptedData)
});
}
})
}
});
},
0 个评论
要回复文章请先登录或注册