收藏
回答

微信小程序获取手机号码解密失败

<button open-type="getPhoneNumber" ></button>


报错:javax.crypto.BadPaddingException: pad block corrupted

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

4 个回答

  • 马路边撸代码的程序员
    马路边撸代码的程序员
    2019-08-10

    https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html
    官方文档说的注意事项:(多阅读几遍应该就能找到问题)
    在回调中调用 wx.login 登录,可能会刷新登录态。此时服务器使用 code 换取的 sessionKey 不是加密时使用的 sessionKey,导致解密失败。建议开发者提前进行 login;或者在回调中先使用 checkSession 进行登录态检查,避免 login 刷新登录态。


    2019-08-10
    有用 4
    回复 3
  • Jadyn
    Jadyn
    2020-11-06

    我这也碰到了,在小程序页长时间停留(2分钟左右),然后调用wx.login,然后去授权获取用户手机号,这时服务端解密就会出错,出错后checksession也是Sucess的,很奇怪的问题

    2020-11-06
    有用
    回复 1
    • 未来可期。
      未来可期。
      2021-05-18
      有找到解决方案吗?我这边也是这样子,第一次拿wx.login登录正常,然后过了2分左右,再次调用wx.login,然后去授权获取用户手机号,这时服务端解密就会出错
      2021-05-18
      回复
  • 轩哥、
    轩哥、
    2020-06-24

    也遇到了同样得问题,有解决得吗

    2020-06-24
    有用
    回复
  • 大饼
    大饼
    2019-07-03

    这个异常通常是因为sessionKey 与 iv 不匹配导致的。

    建议排查一下流程步骤。

    如:wx.login() 与 code换取sessionKey的流程

    2019-07-03
    有用
    回复 14
    • 😉
      😉
      2019-07-03

      流程没问题  都是先wx.login()  而且我之前也验证过sessionKey有没有失效   确定是没失效的

      2019-07-03
      回复
    • 大饼
      大饼
      2019-07-03

      每次getPhoneNumber之前都有调用wx.login() 吗?

      2019-07-03
      回复
    • 😉
      😉
      2019-07-03回复大饼

      没有哦  我在app.js 里面有判断过sessionKey有没有过期  如果过去了会重新去授权页面  只有授权页面才会调用wx.login()

      2019-07-03
      回复
    • 大饼
      大饼
      2019-07-03

      手机号码的解码与用户信息的解码是同一套逻辑的。

      出现这个异常,只能查查为什么使用的sessionKey不匹配了。



      2019-07-03
      回复
    • 😉
      😉
      2019-07-03回复大饼

      不匹配?  会不会有sessionKey没失效 但是不匹配这种可能?

       

      2019-07-03
      回复
    查看更多(9)
登录 后发表内容