收藏
回答

小程序获取手机号问题

获取手机号按钮点击后参数,解密后有几率会解密失败返回null是怎么回事

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

5 个回答

  • 朱成昊
    朱成昊
    2017-12-08

    要先login,再获取加密数据。

    如果先获取到iv和encryptedData,此时获取的数据是需要之前的session_key才能解密,但是由于你是之后才用code换取的session_key的话,新的session_key就解不了了,所以返回一个null。code好像只有5分钟的失效,也对应session_key。这时如果你再获取一次,因为相差不到5分钟,所以session_key没变,就正常返回了。

    所以要实现login拿到code换取session_key,存储在服务端,再获取iv和encryptedData


    2017-12-08
    有用 1
    回复 2
    • 少伟
      少伟
      2019-02-22

      现在你这个流程还好使不

      2019-02-22
      回复
    • 朱成昊
      朱成昊
      2019-02-26

      最近一段时间没开发小程序了,不清楚是否调整了,之前确实是这个样子

      2019-02-26
      回复
  • 永远相信美好的事情即将发生!
    永远相信美好的事情即将发生!
    2020-11-14

    建议在app.js里面写好     // 登录

        wx.login({

          success: res => {

            // 发送 res.code 到后台换取 openId, sessionKey, unionId

          }

        })

         // 保持微信5分钟内login长登录,避免在获取手机号码的时候做登录失效检查

        setInterval(() => {

          wx.login({

            success: res => {

            }

          })

        }, 280000)


    2020-11-14
    有用
    回复
  • 欢
    2018-04-11

    不一定要先login吧, 今天测试了下,小程序不登陆,就一个静态页。然后放一个按钮获取手机号,拿到iv和

    encryptedData后, 在通过wx.login 拿 code, 将 code,iv, encryptedData一并发送后台进行解密。 大部分情况可以,偶尔会解密失败。有点奇怪


    2018-04-11
    有用
    回复 1
  • 彬💤
    彬💤
    2017-12-08

    感谢!

    2017-12-08
    有用
    回复
  • 朱成昊
    朱成昊
    2017-12-08

    上面有几个错别字,应该不影响阅读。我也是上周才做的这个功能,有问题多交流

    2017-12-08
    有用
    回复
登录 后发表内容