您当前的位置: 首页 > 解决方案

微信小程序AES解密失败

  • 作者: admin
  • 发布于 2018-05-21 13:57:28
  • 来源:  
  • 栏目:解决方案

导语: 微信小程序分享群获取群id时后端接口返回“微信AES解密失败”,后来定位到原因是服务端用于解密的session_key失效。用户获

 

微信小程序分享群获取群id时后端接口返回“微信AES解密失败”,后来定位到原因是服务端用于解密的session_key失效。用户获取到openID存在缓存后,就不会每次login获取登录态了,这样会导致登录态失效,即后端维护的session_key失效。分享群后获取的加密信息是老的session_key+openId构成,服务端解密时的session_key要和分享前一致。

14.jpg

在需要获取openGid的页面:

app.getOpenId(this.route, this.data.pageOptions).then((res) => { wx.login({ success(res) { // 刷新服务端session_key api.ajax('GET', api.config_url.refreshWxUserSessionKey, { appId: api.appId, code: res.code, }).then(res => { const { status, message } = res.data; if (status) { console.log('登录态刷新成功'); } }, res => { }); } }) // 其他业务逻辑 

app.js

//获取openGid getOpenGid(shareTicket, status, callback) { var self = this; wx.getShareInfo({ shareTicket: shareTicket, complete(res) { var param = { "iv": res.iv, "encryptedData": res.encryptedData, "appId": self.appId, "openId": wx.getStorageSync("openId") }; self.getAesDecryptData(callback, param); } }); }, getAesDecryptData(callback, param) { const self = this; this.ajax('POST', this.config_url.aesDecryptData, param).then(res => { console.log(res); if (res.data.entry && res.data.entry.openGId) { wx.setStorageSync("openGId", res.data.entry.openGId); callback() && callback(); } else { console.log('获取群id失败'); wx.login({ success(res) { self.ajax('GET', self.config_url.refreshWxUserSessionKey, { appId: self.appId, code: res.code, }).then(res => { const { status, message } = res.data; if (status) { console.log('登录态刷新成功'); } }, res => { }); } }); wx.removeStorageSync('openGId'); } }); },



温馨提示:这篇文章没有解决您的问题?欢迎添加微信:18948083295,有微信小程序专业人员,保证有问必答。转载本站文章请注明转自http://www.okeydown.com/(微信小程序网)。

  • 微信扫描二维码关注官方微信
  • ▲长按图片识别二维码
关注我们

微信小程序官方微信

栏目最新
栏目推荐
返回顶部