收藏
回答

getPhoneNumber按钮上增加bindtap事件获取code的可行性?

获取微信绑定手机号的需求大家应该都碰到过吧?code和session_key的匹配问题时常发生,一般的解决方案是在登录界面加载时先wx.login,将code保存下来,点击获取手机号按钮时再将code和加密数据打包给后端,但是可能出现用户在页面停留一段时间后再点击按钮的情况。

我想如果在按钮上增加bindtap事件,在tap事件中调用wx.login获取code,由于bindgetphonenumber需要一个允许的操作,因此可以保证获取code在前,获取加密数据在后。

之前一直没发现问题,以为解决了。可最近测试测出了一个问题,小程序关闭一段时间后(大概10多分钟),重新打开时第一次获取手机号会报错,根据后台日志查看应该是code和session_key没有对应上导致解密失败,后续再获取就正常,短时间内重新加载小程序也没有这个问题,让测试尝试先拒绝再允许也没有这个问题。

这就难以理解了,为何只有这种情况下会出现一次问题呢?是这样增加bindtap事件导致的问题吗?想了一天也没想出来是什么原因,欢迎大佬赐教讨论。

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

1 个回答

  • 欢乐马
    欢乐马
    2022-02-18

    既然你知道这个问题存在发生的可能性,为什么你不在点击获取手机号码按钮的时候,先校验是否登录状态有效呢?如果有效就走获取手机号码的逻辑,如果无效就走授权code。

    2022-02-18
    有用
    回复 1
    • 涂传连
      涂传连
      发表于移动端
      2022-02-18
      我试过的,会出现checksession通过但是依旧报错的情况。有人说是checksession这个api不靠谱,但是我发现应该是code和session_key都各自有过期时间(官方文档有提到code有5-10分钟的过期时间),checksession只判断session_key是否过期(个人意见)。
      2022-02-18
      回复
登录 后发表内容