收藏
回答

微信登录授权偶尔出现第一次解密失败,第二次解密成功,报错为pad block

框架类型 问题类型 终端类型 微信版本 基础库版本
小程序 Bug 客户端 安卓 6.7.3 2.4

- 当前 问题 的表现(可附上截图)

目前出现了用户偶尔授权登录会解密失败,但是重新登录授权的时候又成功了,参数是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有效后,依旧会出现解密报错


下面是解密代码和调用过程



该处红色框内就是报错行,下图就是报错代码




- 预期表现


偶然事件,不知道怎么复现,


在社区中查看了多个相同问题的提问,但是没有得到有效的方法解决.

当前流程只是被要求 需要保留一些未授权人员的阅读记录.所以流程才写成了两步.

请各位大佬多多指点,谢谢


回答关注问题邀请回答
收藏

13 个回答

  • 騁爲
    騁爲
    2018-12-26

    公司小程序也遇到这个问题,后台人员说 unionId 有时候解密不出来。

    我们的流程是点击微信登录按钮(open-type='getUserInfo')获取到用户的信息,然后调用 login 接口获取 code,最后把加密数据和 code 一起传给服务器,由服务器来获取 session_key 并解密数据完成登录/自动注册功能。

    不过解密失败仅限于未关注过公众号、未使用微信授权登录App的微信用户。

    2018-12-26
    有用
    回复
  • 小姑凉
    小姑凉
    2018-12-26

    那现在这种解密失败的问题没有办法避免么

    2018-12-26
    有用
    回复 1
    • 此时此刻
      此时此刻
      2022-11-28
      请问这个问题怎么解决的
      2022-11-28
      回复
  • 半寸灰
    半寸灰
    2018-12-25

    微信的 这个机制是有问题

    按微信的说的来   也不能百分百保证   解密成功

    还是有几率解密失败

    2018-12-25
    有用
    回复 2
    • 小姑凉
      小姑凉
      2018-12-25

      请问下 那你们的处理流程是怎样的?

      2018-12-25
      回复
    • 半寸灰
      半寸灰
      2018-12-26回复小姑凉

      和你差不多

      2018-12-26
      回复

正在加载...

登录 后发表内容