已经确认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是在异步函数中执行,而不是通过函数参数来传递)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)