你好,微信开发团队和开发的童鞋们~~
第三方平台 获取公众号access_token 后, 请求公众号接口
我首先调用生成token的接口,生成一个access_token。调取公众号的一些接口是 有时候会成功,有时候会返回40001错误
例如,通过同一个access_token获取用户信息,并发进行接口调用。有的获取成功,有的返回错误,失败的原因是:{"errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest hint: [0548vr44!]"}
如果是access_token无效,那应该全部都无效才对。
是我哪里搞错了吗?
接口地址:
https://api.weixin.qq.com/cgi-bin/user/info?access_token=AEsImxnAjQc5ktCuAqBHkuoLmEsCjykj5sm4KeW7dfNmptQkO9MF9m0cseD2U0GLNPWsnUZVBo44yhwSnIhb1ahMair4B7Ai8IY2fgDhv6nYBgiqhm3HO0O0jz0oM_DfHKPfAKDCFK&openid=o5kgtw5LUXEotarR0J5Y9jjYnCNs&lang=zh_CN
你好,从你的描述来看问题应该出在access_token不稳定上。由于每次请求新的access_token会导致旧token失效的原因,请确保后台服务中access_token采用了中控服务器统一刷新的机制。具体参考
文档:https://image.wxopen.club/content_a512b306-3545-11ea-b236-a0999b08aadb.png - 获取access_token 一节
1. 获取 access_token
access_token 是全局唯一接口调用凭据,开发者调用各接口时都需使用 access_token,请妥善保存。access_token 的存储至少要保留512个字符空间。access_token 的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的 access_token 失效。
公众平台的 API 调用所需的 access_token 的使用及生成方式说明:
为了保密 appsecrect,第三方需要一个 access_token 获取和刷新的中控服务器。而其他业务逻辑服务器所使用的 access_token 均来自于该中控服务器,不应该各自去刷新,否则会造成 access_token 覆盖而影响业务;
目前 access_token 的有效期通过返回的 expires_in 来传达,目前是7200秒之内的值。中控服务器需要根据这个有效时间提前去刷新新 access_token。在刷新过程中,中控服务器对外输出的依然是老 access_token,此时公众平台后台会保证在刷新短时间内,新老 access_token 都可用,这保证了第三方业务的平滑过渡;
access_token 的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新 access_token 的接口,这样便于业务服务器在 API 调用获知 access_token 已超时的情况下,可以触发 access_token 的刷新流程。
开发者可以使用 AppID 和 AppSecret 调用本接口来获取 access_token。AppID 和 AppSecret 可登录微信公众平台官网-设置-开发设置中获得(需要已经绑定成为开发者,且帐号没有异常状态)。AppSecret 生成后请自行保存,因为在公众平台每次生成查看都会导致 AppSecret 被重置。注意调用所有微信接口时均需使用 https 协议。如果第三方不使用中控服务器,而是选择各个业务逻辑点各自去刷新 access_token,那么就可能会产生冲突,导致服务不稳定。