這個問題是微信開發常見問題之一,根據報錯信息查詢是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在重啟項目