這個問題是微信開發(fā)常見問題之一,根據報錯信息查詢是access_token失效了。
根據微信官方文檔:access_token的有效期是7200s,且一天獲取access_token不得超過10000次。
列舉各種情況下可能導致的失效:
1.本地緩存access_token:在開發(fā)環(huán)境下,多人同時開發(fā)且程序員各自啟動自己應用服務,就會彼此導致失效;在生產環(huán)境下,采用分布式部署應用服務,也會導致各自失效。
2.集中式緩存(如redis)access_token,理論上該種緩存下應該沒問題,但由于環(huán)境或使用問題會有以下集中情況導致失效發(fā)生:
2.1 開發(fā)環(huán)境、測試環(huán)境、生產環(huán)境各自集中式緩存服務器均是獨立的,針對同一個APPID取access_token就會相互導致失效。
2.2 多個團隊開發(fā)多個項目,用到都是同一個APPID,各自的集中式緩存是獨立的,會導致access_token失效
2.3 批量發(fā)模板消息(類似耗時長的批量處理任務同樣),采用先取access_token,再逐一發(fā)送,由于執(zhí)行時間較長,后期發(fā)送的可能是access_token真正過期了導致。正確姿勢應該是從緩存去一次發(fā)一條。
2.4 微信內部原因導致未到期就失效。
在本項目中多數情況是在多個環(huán)境中使用的是同一個公眾號,這種情況下需要把各個環(huán)境分開,其次將項目停止,清除redis在重啟項目