收藏
回答

获取手机号无法保证code有效?

官方文档如是说:

> 在回调中调用 wx.login 登录,可能会刷新登录态。此时服务器使用 code 换取的 sessionKey 不是加密时使用的 sessionKey,导致解密失败。建议开发者提前进行 login;或者在回调中先使用 checkSession 进行登录态检查,避免 login 刷新登录态。

其中给出2个方案:

1、提前调用wx.login,获取code。

2、在回调中调用 checkSession 检查登录状态


但这2个方案都有缺陷:

1、code码时效只有5分钟,如果提前获取到code后,用户5分钟之后才授权,那么这个code码也已经失效。

2、checkSession检查登录失效后,还是需要再调用wx.login获得code,但此次用户授权手机号也无效了,需要用再次授权,影响用户体验。


总之,目前官方文档给出的方案都不完美。


希望有大佬能给出完美方案,小弟感激不尽



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

1 个回答

  • 子游
    子游
    2021-06-23

    实在没看懂你想表达什么,点击授权时,如果五分钟没到,就用老的code,过期了就会获取新code,点击授权这个时候只是获取encryptedDataStr,iv,这个时候还没有手机号,第一步是通过code获取 session_key之类的,然后再配合授权获取的两个参数解密手机号,这个时候已经有登陆状态了,存下来,只要网络正常,你们服务器正常,不存在你所描述的,点击授权,code失效问题,接口请求都是毫秒计算

    2021-06-23
    有用
    回复
登录 后发表内容