儲存與更新 access_token


做微信的項目,一開始就是 access_token 的申請,微信文檔上寫的比較清楚:

1、為了保密appsecrect,第三方需要一個access_token獲取和刷新的中控服務器。而其他業務邏輯服務器所使用的access_token均來自於該中控服務器,不應該各自去刷新,否則會造成access_token覆蓋而影響業務;
2、目前access_token的有效期通過返回的expire_in來傳達,目前是7200秒之內的值。中控服務器需要根據這個有效時間提前去刷新新access_token。在刷新過程中,中控服務器對外輸出的依然是老access_token,此時公眾平台后台會保證在刷新短時間內,新老access_token都可用,這保證了第三方業務的平滑過渡

從中可以知道:

  1. 我們要做好 access_token 的儲存,且只能儲存在一個地方(暫稱為A處),需要獲取access_token只能從A處獲取,如果A處不存在,就重新獲取 access_token 並存放到A處。這點是比較好做的,我在只有一台服務器,通過將 access_token 儲存到 redis 中作為中控。
  2. 難處理的是這點:access_token覆蓋。你不知道什么時候會發生覆蓋,可能是別人不小心重新生成了一個 access_token。我之前的做法是,在每次調用 access_token 之前,都向微信發起請求,驗證 access_token 是否有效,如果無效,就重新申請一個。但是這樣頻率過大的話,會被微信服務器拒絕。所以,我現在改成:根據調用結束之后的響應,如果錯誤碼是 access_token 過期相關的,才重新申請新的 access_token,這樣又會造成遺漏,所以我又在申請成功后,將當前執行的函數放入隊列中。另外,每次都要根據返回判斷,然后做出處理,代碼重復太多了,應該想辦法減少重復

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM