小程序
小游戏
企业微信
微信支付
扫描小程序码分享
现在的调用流程是前端调用wx.getUserInfo获取iv和encrytedData,然后调用wx.login获取code,把这些数据传给后端,后端调用微信接口获取session_key对enceytedData进行解密,发现解出来的数据是错误的。
后端捕获到的error直接扔给了前端,前端拿到的信息是‘No JSON object could be decoded’,现在不太清楚这个错误的具体原因是什么?而且这个情况是频率比较高的偶现,有知道原因或者遇到一样情况的吗?
5 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
仅提供这个错误信息无法定位问题。请逐步排查从前端传递到后台解密过程中的数据是否异常。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
怎么排查呢?我们已经看过了 从前端给过去的code和encrytedData是没问题的,问题就是在解密的时候出现的~ 解析出来的是一堆乱码
同意,我这边也遇到了同样的问题。今年开发一个新的小程序,后端程序都是以前可用的,前端去掉了 getuserInfo() ,使用 button 获取 userInfo ,userInfo 回调里调用 wx.login ,然后就非常频繁的解码失败。
顶一下,让官网看到~
我也遇到了。 自从,把wx.getUserInfo改为,button open-type="getuserinfo"之后, 经常发生,第一次,上报用户加密数据的时候,服务端会解密失败。
异常消息:
填充无效,无法被移除。
然后,再点一次,就可以解密成功
兄弟 我解决了 找到问题了
是么,怎么解决的
能看到我上面的评论吗
好像看不到,第一条和最后一条,都是,旧评论
问题找到了,其实原因是这样的 ,我们在getuserinfo没改之前,是先wx.login() 拿到 code,然后再调用getuserinfo,拿到iv等加密信息,实际上在我们的后端是通过code去获取session-key等信息,用来解密我们给过去的 encryptedData加密信息的,但是你们注意下,这个getuserinfo一旦生成了,就不能再调用wx.login了,否则会导致后端从微信那边拿到的session-key不一样的,所以 现在登录方案改了以后,我们都是等授权完了 又去调用了一次login,这样就会有概率发生问题,不匹配了,所以我们为了确认一定没有问题,我现在是这么处理的,点击button的时候,getuserinfo只用来确认有没有授权,然后调用login拿到code后再去主动调用一次getuserinfo,从最新的userinfo中拿到最新的iv和 encryptedData传给后端,这样就能确保用了getuserinfo后不会再有wx.login的调用了,wx.login是会刷新session的,切记~
顶一下,让官网看到,我也遇到过这个问题。大部分的时候,是解密成功的,但有时候就是失败,而且,用官网提供的解密例子代码,也是同样解密不了,真蛋疼。
怎么解决的?什么问题?
你刷新了sessionkey之后 重新获取了加密信息吗,要不然肯定解密失败了
顶一下,让官方看到。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
仅提供这个错误信息无法定位问题。请逐步排查从前端传递到后台解密过程中的数据是否异常。
怎么排查呢?我们已经看过了 从前端给过去的code和encrytedData是没问题的,问题就是在解密的时候出现的~ 解析出来的是一堆乱码
同意,我这边也遇到了同样的问题。今年开发一个新的小程序,后端程序都是以前可用的,前端去掉了 getuserInfo() ,使用 button 获取 userInfo ,userInfo 回调里调用 wx.login ,然后就非常频繁的解码失败。
顶一下,让官网看到~
我也遇到了。 自从,把wx.getUserInfo改为,button open-type="getuserinfo"之后, 经常发生,第一次,上报用户加密数据的时候,服务端会解密失败。
异常消息:
填充无效,无法被移除。
然后,再点一次,就可以解密成功
兄弟 我解决了 找到问题了
是么,怎么解决的
能看到我上面的评论吗
好像看不到,第一条和最后一条,都是,旧评论
问题找到了,其实原因是这样的 ,我们在getuserinfo没改之前,是先wx.login() 拿到 code,然后再调用getuserinfo,拿到iv等加密信息,实际上在我们的后端是通过code去获取session-key等信息,用来解密我们给过去的 encryptedData加密信息的,但是你们注意下,这个getuserinfo一旦生成了,就不能再调用wx.login了,否则会导致后端从微信那边拿到的session-key不一样的,所以 现在登录方案改了以后,我们都是等授权完了 又去调用了一次login,这样就会有概率发生问题,不匹配了,所以我们为了确认一定没有问题,我现在是这么处理的,点击button的时候,getuserinfo只用来确认有没有授权,然后调用login拿到code后再去主动调用一次getuserinfo,从最新的userinfo中拿到最新的iv和 encryptedData传给后端,这样就能确保用了getuserinfo后不会再有wx.login的调用了,wx.login是会刷新session的,切记~
顶一下,让官网看到,我也遇到过这个问题。大部分的时候,是解密成功的,但有时候就是失败,而且,用官网提供的解密例子代码,也是同样解密不了,真蛋疼。
兄弟 我解决了 找到问题了
怎么解决的?什么问题?
能看到我上面的评论吗
你刷新了sessionkey之后 重新获取了加密信息吗,要不然肯定解密失败了
顶一下,让官方看到。