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