收藏
回答

小程序getPhoneNumber前获取code问题?

我们团队做小程序登录有一个微信登录功能,是先获取用户手机号,然后通过我们自己的后台做微信登录。但是有一个问题是所以我们使用两版方案:

第一版的方案是在小程序加载时就获取code,然后把code传给后台解析session-key。但是code是一个临时凭据,可能会过期。

第二版的方案是在getPhoneNumber回调中获取code,以保证code的时效性。但是微信官方建议:在getPhoneNumber前一定要先获取code。否则会导致getPhoneNumber的加密信息和解密时的信息不一致。我们这边测试的结果是如果连续做登入登出就会出现登录失败的情况。

请问大家在做登录时获取code和将code传给后台应该怎么处理,该在什么时机处理?

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

3 个回答

  • 谢美文
    谢美文
    2020-11-11

    <button open-type="getPhoneNumber" catchtap="login" bindgetphonenumber="getWxPhone">绑定微信手机号</button>

    点击绿色按钮后触发catchtap,此时调用wx.login保存code 同时系统会弹窗如图, 点击允许后触发bindgetphonenumber,此时携带code肯定是新鲜的

    2020-11-11
    有用 3
    回复 3
    • 阳阳阳
      阳阳阳
      2020-11-11
      实测有效,大佬牛掰。再多问一下,这种方案要自定一个获取 code 失败弹窗对吧?我们现在的处理是如果wx.login()没有取回code,我们这边就给用户一个弹窗提示授权失败,建议用户重新授权。
      2020-11-11
      回复
    • 承城😄
      承城😄
      2021-12-31
      后台生成token也需要code,那就需要获取两次code了
      2021-12-31
      回复
    • 承城😄
      承城😄
      2021-12-31
      我是觉得它文档描述的不正确,文档描述说不用wx.login返回的code
      2021-12-31
      回复
  • 枫
    2023-06-29

    加个点击事件,先执行点击事件获取code,然后再是授权框,每次都是最新的

    2023-06-29
    有用
    回复
  • จุ๊บ
    จุ๊บ
    2020-11-11

    个人处理,点击获取手机号的时候调用wx.login获取code,成功之后将encryptedData、iv、code 一并传给后端处理

    2020-11-11
    有用
    回复 2
    • 阳阳阳
      阳阳阳
      2020-11-11
      我们现在就是这种方式,但是这样一来不就是先获取用户信息,再获取code了吗?这样和微信文档的注意事项正好是相反的。而且后端测试的时候也确实发现这种方式在连续登入登出时会出现code失效的问题。就是登录失败了。就是因为前后两次的session_key不一致。
      2020-11-11
      回复
    • จุ๊บ
      จุ๊บ
      2020-11-11回复阳阳阳
      点击获取手机号只走 wx.login,不获取用户信息,这只是获取code。相当于获取code和获取encryptedData、iv 是同步的
      2020-11-11
      回复
登录 后发表内容
问题标签