- 当前 问题 的表现(可附上截图)
目前出现了用户偶尔授权登录会解密失败,但是重新登录授权的时候又成功了,参数是session_key两次相同,但是iv不同.
登录流程为: 用户进入小程序,前端调用wx.login() 获取code,传给开发者服务器,开发者服务器通过jscode2session拿到session_key 和用户openId,在没有调用需要的逻辑业务之前,不需要做授权弹框处理.开发者服务器将session_key返回给了前端,前端自己进行缓存.
在需要做逻辑业务时,前端调用checkSession检查之前缓存的session_key是否有效,如果有效就直接调用getUserInfo接口获取用户加密参数.然后将session_key和用户加密字符串传给开发者服务器,开发者服务器进行解密,解密时会出现pad block corrupted 错误.如果session_key被checkSession检查出无效.再次调用wx.login获取code,重新拿到session_key进行上一步的循坏…
首先想咨询下各位大佬 该流程是否会有问题.并且在检查session_key有效后,依旧会出现解密报错
下面是解密代码和调用过程
该处红色框内就是报错行,下图就是报错代码
- 预期表现
偶然事件,不知道怎么复现,
在社区中查看了多个相同问题的提问,但是没有得到有效的方法解决.
当前流程只是被要求 需要保留一些未授权人员的阅读记录.所以流程才写成了两步.
请各位大佬多多指点,谢谢
客户端拿到code的时候 应该是要同步到微信自己的server的 这个时候后端如果立马向微信server发起请求 可能导致解析失败 解决办法 : 客户端拿到code及加密数据后 延迟1s再向后端发出请求 或者后端去做延迟请求