收藏
回答

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

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


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

最后一次编辑于  07-03  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

2 个回答

  • 风吹花落泪如雨
    风吹花落泪如雨
    08-10

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


    08-10
    赞同
    回复
  • 大饼
    大饼
    07-03

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

    建议排查一下流程步骤。

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

    07-03
    赞同
    回复 13
    • 😉
      😉
      07-03

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

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

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

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

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

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

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

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



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

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

       

      07-03
      回复
    查看更多(8)