在实现一个微信群权限控制的功能中,主要执行了如下步骤
1. 用户从微信群打开小程序时,会获得微信给我们的加密数据,加密数据主要包括微信群的id
2. 调用wx.login获取一个code
3. 使用code换取一个session key供解密数据使用
4. 调用wx.checkSession,检查session key是否过期, 没过期时,把加密数据传输到后端服务器解密,利用上一步的session key解密数据,会出现一定概率的失败
出现上述问题主要原因是在第1步中,微信加密数据的时候使用了一个session key,但是第2步的操作导致了session key发生了改变,请在这个问题如何解决,如果不执行第2步,又无法拿到session key
官方文档说,加密使用的session_key和解密使用的session_key必须一致,但是我第一次进小程序,不使用login,也一样拿加密数据,那谁知道加密的session_key是什么,我是真的懵.....
就算我提前使用login获取session_key,保存下来,能够解密成功,过了一小段时间之后重新获取,check没失效,却解密失败,如果check失效的话,那他又是用的什么加密的呢
我也是,很久没打开小程序,旧的session-key已经失效了,但是checkSession返回成功。后台拿session-key解密失败。
遇到同类问题,有解决方式吗,概率性失败?
这就是个很尴尬的问题
要是用户没用过这个小程序 那就没有code 也就是再加密前获取不了session key 加密后 调用 wx.login 有可能导致 session key更新 解密失败。
用户用过这个小程序 还好说