微信小程序分享群获取群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_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');
}
});
},

微信小程序AES解密失败的更多相关文章

  1. 微信小程序手机号解密失败-43001

    今天是2020年1月16号,从昨天下午开始,一直遇到一个问题: 客户在注册会员的时候的第二步,验证手机号的时候,一直提示验证失败,-43001 直接说原因:用户的session_key过期 期间大部分 ...

  2. Java之——实现微信小程序加密数据解密算法

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/79450115 一.概述 微信推出了小程序,很多公司的客户端应用不仅具有了APP.H ...

  3. 微信小程序AES加密解密

    微信小程序  其实在调用一些第三方 js的时候 其实没有大家想的那么复杂,无非就是把原生js调用方式   改为微信小程序 js调用方式 废话不多说直接贴代码 其实就是将原生function 或者 对象 ...

  4. 微信小程序加密解密 C# 以及 填充无效,无法被移除错误的解决方案 Padding is invalid and cannot be removed

    解密加密源码 using System; using System.Security.Cryptography; using System.Text; namespace Wechat { publi ...

  5. 艾妮记账本微信小程序开发(失败版)

    这是一个寒假假期作业,要求是用web开发或者微信小程序或者手机app开发的,我本来是打算用微信小程序开发的,但由于这个后台数据库连接需要通过https认证后的浏览器再访问MySQL.所以做到后台数据库 ...

  6. 小程序登录 -41003: aes 小程序加密数据解密失败问题

    在微信小程的开发中,登录问题,一定要按照这样的顺序 1. 小程序请求login,拿到code 然后传给服务端:  2.服务端拿到code 到微信服务器拿到sessionKey :3.然后小程序调用ge ...

  7. 微信小程序aes前后端加密解密交互

    aes前后端加密解密交互 小程序端 1. 首先引入aes.js /** * [description] CryptoJS v3.1.2 * [description] zhuangzhudada so ...

  8. 微信小程序加密解密参数

    加密:encodeURIComponent(参数) 解密:decodeURIComponent(参数)

  9. thinkphp 导入微信小程序加密解密库

    第三方类库 第三方类库指除了 ThinkPHP 框架.应用项目类库之外的其他类库,一般由第三方系统或产品提供,如 Smarty.Zend 等系统的类库等. 前面使用自动加载或 import 方法导入的 ...

随机推荐

  1. pyhton exit

    exit("0") is normally out, and means "successful termination" exit("1" ...

  2. JSP 对象的作用范围

    在JSP中,对象有四种范围:page.request.session和application page范围             所谓的page范围指单一的JSP页面范围,page范围内的对象只能在 ...

  3. 神奇的layout_weight属性

    1.概述 在线性布局有时候为了控制一下屏幕的适配,可以使用layout_weight这个属性来设置权重,要注意一点,这个属性只有在Linearlayout中才有效,这个属性往往会随着android:l ...

  4. ubuntu virtualbox xp无声音解决

    太简单了,记录一下解决方法,进入xp,打开设备管理器,对着ac97设备驱动 点右键,点更新驱动,更新一下就ok了. 这时候去控制面板,就可以看到有音频设备了. 具体步骤如下: 第一步,virtualb ...

  5. PDA开发数据由DB下载至PDA本地

    public string DownFile = "\\下载.txt";//下载路径 public string LoadFile = "\\上传.txt";/ ...

  6. 新版MATERIAL DESIGN 官方动效指南(二)

    继上一篇,本文继续第二部分,从动效的速度.动态持续时间.通用持续时间和缓动曲线4个部分,教你创建平滑一致的Material Design 动效.再系统的干货都比不上官方的动效指南,西瓜就在这,赶紧来捡 ...

  7. iOS9 ReplayKit录制视频

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/50260873 ...

  8. PHP变量的定义与相应的数据类型

    在PHP中,变量的定义和C语言定义的方法是类似的,但是在PHP中,变量使用起来就非常灵活,一个变量既可以做整型,也可以是浮点型,也可以是字符串或者字符类型,通通只要在变量名前面加一个$然后加上你的变量 ...

  9. MASM中3中文本宏的使用与区别

    = 宏 格式 : name = exp 其中,exp只能为32位整数值,且用=宏定义的符号名称可以重定义: EQU 宏 格式1:name EQU exp exp为有效整数值,可以重定义: 格式2:na ...

  10. 页面加载完之前显示Loading

    1.第一种方式 HTML <body class="is-loading"> <div class="curtain"> <div ...