上篇文章有提到过,这次完善下,上张的链接
https://blog.csdn.net/yanpengfeil/article/details/85982935
先说一下之前一直碰到的问题,解密数据时 时而成功、时而失败。。。。
1.原因时key是有时限的,之前的思路是在使用之前马上获取,显然这个思路的方向是错误的。
正确的解决方式,小程序全局函数执行以后就把key获取回来,问题完美解决
其实肯定可以比我写这个简单的,这段代码是因为改来改去最后成这样了,自行优化吧
获取key:
getKey() {
let key = "";
wx.login({
success: function (res) {
if (res.code) {
wx.request({
method: "POST",
header: {
'content-type': 'application/x-www-form-urlencoded' // 默认值
},
url: getApp().data.serverUrl + '/view',
data: {
json: "{\"code\":\"" + res.code + "\"}",
"method": "login"
}, success: function (result) {
if (result.statusCode == 200) {
let key = result.data.session_key;
if (key != "") {
wx.setStorageSync('sessionKey', key);
} else {
wx.setStorageSync('sessionKey', "");
}
} else {
wx.setStorageSync('sessionKey', "");
}
}, fail: function () {
wx.setStorageSync('sessionKey', "");
}
})
}
}
})
}
解密
decrypt: function (encryptedData, iv, key) {
let that = this;
let result = "";
//解密
wx.request({
method: "POST",
header: {
'content-type': 'application/x-www-form-urlencoded' // 默认值
},
url: getApp().data.serverUrl + '/view',
data: {
"json": "{\"encryptedData\":\"" + encryptedData + "\",\"iv\":\"" + iv + "\",\"session_key\":\"" + key + "\"}",
"method": "getDecrypt"
}, success: function (res) {
//解密成功
result = res.data;
if (res.statusCode == '200') {
if (result.length < 1000) {
wx.setStorageSync('encryptedData', result);
} else {
wx.setStorageSync('encryptedData', "");
}
} else {
wx.setStorageSync('encryptedData', "")
}
}, fail: function () {
wx.setStorageSync('encryptedData', "");
}
})
}
问题2:获取手机号码的问题
用户信息、手机号码2选1,不能在一次请求中同时获取,解密都是一样的代码