小程序access_token未超时报失效:40001的原因

编程知识 更新时间:2023-04-06 10:42:53

前言:背景是由于需要实时生成小程序二维码,使用接口B。我们需要获取小程序的access_token,但是获取access_token的请求次数是有限制的(一天2000次),为了避免超出这个限制,后台一般做法是使用redis限时(一般小于7200秒)保存。但是发现时不时出现小程序access_token未超时报失效:40001的错误

接口B文档:wxacode.getUnlimited | 微信开放文档

获取access_token接口文档:auth.getAccessToken | 微信开放文档

一、问题原因

后续找到原因,由于笔者是在2个环境下使用小程序接口,并没有做所谓的中控服务器区分。在测试请求小程序access_token时,正式环境的access_token就会在5分钟内失效,导致5分钟后通过access_token请求小程序接口会报失效:40001,反之亦然。

备注:access_token 的存储与更新

  • access_token 的存储至少要保留 512 个字符空间;
  • access_token 的有效期目前为 2 个小时,需定时刷新,重复获取将导致上次获取的 access_token 失效;
  • 建议开发者使用中控服务器统一获取和刷新 access_token,其他业务逻辑服务器所使用的 access_token 均来自于该中控服务器,不应该各自去刷新,否则容易造成冲突,导致 access_token 覆盖而影响业务;
  • access_token 的有效期通过返回的 expires_in 来传达,目前是7200秒之内的值,中控服务器需要根据这个有效时间提前去刷新。在刷新过程中,中控服务器可对外继续输出的老 access_token,此时公众平台后台会保证在5分钟内,新老 access_token 都可用,这保证了第三方业务的平滑过渡;
  • access_token 的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新 access_token 的接口,这样便于业务服务器在API调用获知 access_token 已超时的情况下,可以触发 access_token 的刷新流程

 二、问题解决

(1)使用中控服务器,说白了就是共用一台服务器的redis来保存缓存。这是最简便可行的方法。

(2)如果无法满足申请中控服务器,则可再申请一个小程序来作为测试使用

更多推荐

小程序access_token未超时报失效:40001的原因

本文发布于:2023-04-06 10:42:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/d5edd20ee888f6773633d370ce839ac4.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:时报   原因   程序   access_token

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 49115文章数
  • 14阅读数
  • 0评论数