微信小程序AES解密失败

微信小程序共享群id后端接口返回微信AES解密失败的原因是服务端用于解密session_key失效。用户获取到openID缓存后,不会每次都存在login获取登录态会导致登录态失效,即后端维护session_key无效。共享组获得的加密信息是旧的session_key openId组成,解密服务端时session_key与分享前一致。

在需要获取openGid的页面:

app.getOpenId(this.route,this.data.pageOptions).then((res) => {wx.login({success(res) {// 刷新服务端session_keyapi.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

//获取openGidgetOpenGid(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');}});},

作者:东少回忆链接:微信小程序:AES解密失败 - 东少记忆 - 博客园的作权属于作者。请联系作者获得商业转载的授权,请注明非商业转载的来源。

扫码免费用

源码支持二开

申请免费使用

在线咨询