微信小程序显示token提取手机号码失效

微信小程序显示token提取手机号码失效,第1张

第一次获取access_token后存放至redis中,并将获取accessToken接口返回的有效时长设置为过期时间。然后在生产环境上用这个全局的access_token去获取微信用户手机号时一直提示失效:{"errcode":42001,"errmsg":"access_token expired rid: 62b9305a-46e1bbcb-429c805f"}。但是在本地配置生产环境地址然后用同一个access_token就能获取到用户手机号。

已经确认access_token只有一个口来获取,不存在其他地方调用的情况,也就是说全局唯一,而且是在有效期内,但生产上缺一直提示失效。

应该是access_token获取失败了,没有传递正确的access_token,导致接口访问权限不足。

解决办法:第一步:找到小程序里面的开发选项,找到服务器域名,获取域名,保存域名;

第二步:打开小程序,刷新页面,打开详情,我们看到域名已经改变;

第三步:配置二级路由,在app.json中的page里面配置跳转的路由。

需要重新获取code,然后得到access token。 即要重新调用授权界面。需要用refresh token刷新access token。

关于access token过期的解决办法:

是在内层函数中,如果执行失败,并且是access_token过期的异常,则会在request的时候抛出专门的异常。

在外围函数如果接收到了这个异常,则会抛出让装饰器接收到,装饰器收到这个异常后会删掉缓存中的token,并且重新执行该函数,这样该函数在执行的时候,就会去主动的获取最新的token。

assess token过期的原因:

测试服和线上服使用同一个app_id和secret来获取,可能会存在其中一方获取的token是旧的。

代码中没有统一的从一个地方来获取,而是直接从官网获取,导致不统一(看了代码,没有发现单独获取token的地方)。

请求获取新的token的时候失败(应该不可能,因为请求成功以后会在redis中缓存两个小时,但是发现没过多久又再次失效,因此主要原因应该不是这个)。

异步队列等待的时间较长,正好执行的时候token已经更新(应该不可能,获取token是在异步函数中执行,而不是通过函数参数来传递)。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12102441.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存