3847关注11901浏览
准确来讲不是有时,是隔断时间后必然失败(貌似不是因为Sessionkey没更新,请看下文)
代码流程是这样的:
前端调用wx.checkSession()
判断Sessionkey是否失效,如果失效就调用wx.login()
然后把登录凭证code传给后端;
后端根据凭证获取新的Sessionkey,并存入数据库(更新数据库中的数据);
前端获取到加密数据后传给后端解密;
后端从数据库取到最新的Sessionkey,根据提供的方法解密。解密成功之后数据传给前端。
但非常奇怪的是第一天是可以正常解密的,第二天就会返回-41003的错误码:
// 这是后端报错的代码片段
$result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
$dataObj=json_decode( $result );
if( $dataObj == NULL ) {
return array(
'code'=>-41003,
'msg'=>'aes 解密失败:'.$sessionKey
); }
debug过程
尝试不调用wx.checkSession()
而直接刷新Sessionkey,依然失败;
后端的Session
-
至过去的我
2044人对此回答表示赞同
我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多> -
zqsg走一波
15人对此回答表示赞同
我们也是偶尔很大几率丢失
展开150回复分享发布于 6年前评论(0)
收起评论
-
酥油茶
14人对此回答表示赞同
我也是一样的问题。。。竟然这么容易出错
展开140回复分享发布于 6年前评论(0)
收起评论
-
纸短情长
13人对此回答表示赞同
我也遇到,我是在获得用户手机号出现的问题。原因是因为加密和解密的sessionKey不一致导致。
展开130回复分享发布于 6年前评论(0)
收起评论
-
肆无忌惮
9人对此回答表示赞同
帮顶!让官方看到
展开90回复分享发布于 6年前评论(0)
收起评论
-
汪撕葱
8人对此回答表示赞同
保证wx.login的code在wx.getUserInfo之前返回
展开80回复分享发布于 6年前评论(0)
收起评论
-
黎明星晨
5人对此回答表示赞同
求帮忙
展开50回复分享发布于 6年前评论(0)
收起评论
-
Janaya
4人对此回答表示赞同
我也遇到过这样的情况
展开40回复分享发布于 6年前评论(0)
收起评论
-
林小姐也是lyn
2人对此回答表示赞同
建议先看下这个回答,看看是不是遇到同类型问题
展开21回复分享发布于 6年前评论(1)
收起评论
-
一桶冰水 2019-01-11 22:54
官方真的很敷衍!
回复
-