已解决。小程序获取手机号时,session_key解密失败
小程序获取手机号偶尔解密失败
- 一开始我的处理方式是在页面直接用checkSession,但这里check回调只要是wx.login过全都是“success”。后面导致大概率的解密失败
- 无脑操作wx.login()也可以解决,但是也会概率出现。
- 参考了一个朋友的做法,在Page onLoad的时候执行一次wx.login(),然后拿到新的session_key,再用此时的新key去解密就通了。或者改为请求解密之前执行一次登录,据说出问题的概率还是很大。
- 最后,就是最好执行获取手机号之前再checkSession一下判断一下状态
问题的原头,由于session_key在验证的时候,不管是过期的key还是新的key都是success,都会出现失败,很难把控状态
思路就是用code换取后端的session_key,再把key带回去后端验证,这样就保证的key是一直保持一致的
onLoad: function(options) {
let that = this;
wx.login({
success(res) {
request.sendGet({
url: '',
data: {
code: res.code
}
}).then(e => {
that.setData({
key: e.result.Key
})
})
}
})
},
bindgetphonenumber3(e) {
if (e.detail.errMsg === "getPhoneNumber:ok") {
let {
key
} = this.data;
request.sendPost({
url: "",
data: {
iv: e.detail.iv,
key,
encryptedData: e.detail.encryptedData,
}
}).then(res => {
console.log(res)// 登录信息
})
} else if (e.detail.errMsg === "getPhoneNumber:fail user deny") {
wx.showModal({
title: '提示',
content: '你已拒绝授权,请重新点击并授权',
showCancel: false,
confirmText: "知道了"
})
}
},