这个问题是微信开发常见问题之一,根据报错信息查询是access_token失效了。
根据微信官方文档:access_token的有效期是7200s,且一天获取access_token不得超过10000次。
列举各种情况下可能导致的失效:
1.本地缓存access_token:在开发环境下,多人同时开发且程序员各自启动自己应用服务,就会彼此导致失效;在生产环境下,采用分布式部署应用服务,也会导致各自失效。
2.集中式缓存(如redis)access_token,理论上该种缓存下应该没问题,但由于环境或使用问题会有以下集中情况导致失效发生:
2.1 开发环境、测试环境、生产环境各自集中式缓存服务器均是独立的,针对同一个APPID取access_token就会相互导致失效。
2.2 多个团队开发多个项目,用到都是同一个APPID,各自的集中式缓存是独立的,会导致access_token失效
2.3 批量发模板消息(类似耗时长的批量处理任务同样),采用先取access_token,再逐一发送,由于执行时间较长,后期发送的可能是access_token真正过期了导致。正确姿势应该是从缓存去一次发一条。
2.4 微信内部原因导致未到期就失效。
在本项目中多数情况是在多个环境中使用的是同一个公众号,这种情况下需要把各个环境分开,其次将项目停止,清除redis在重启项目