小程序access_token耗盡問題

概述


前幾天,產品經理緊急打我電話,說後臺好些商品無法生成小程序碼了,這些商品小程序碼是需要緊急推到公衆號文章裏的,讓我趕緊解決。

我立馬登錄到後臺操作了一下,果然報錯了。但是由於報錯信息只是:“操作失敗”。啥都沒有,簡直醉了,只能用tail -f xxxx.log命令,看看具體的報錯堆棧,發現是空指針錯誤,仔細看了一下代碼,當access_token爲空的時候,會走入到一段特有的邏輯,但是這段代碼邏輯不嚴謹導致的這個錯誤。

這種情況下,得先知道爲啥access_token獲取不到了,再次看了一下日誌,發現微信那邊提示:

reach max api daily quota limit hint

意思是說,超過限制了,google了一把,有兩個解決方案:

  • 登錄後微信公衆號後臺,進行手動清0;
  • 直接調用微信的清零接口;

第一種辦法做不到,因爲針對小程序的,壓根就沒這個入口。只能用access_token超過限制文章提到的,手動調用:

https://api.weixin.qq.com/cgi-bin/clear_quota

要想訪問這個接口,需要兩個參數,第一個是有效的access_token,第二個參數是app_id,還好當時我們有緩存過access_token,雖然當前獲取不到,但是可以試一下用之前還未失效的access_token,至於app_id,這個很好獲取的。

可以使用postman進行調用。
在這裏插入圖片描述

調用完後,終於又可以生成小程序碼了。


追根問底


處理完這個問題後,仔細觀察了後臺日誌,發現有個定時任務,需要頻繁的直接調用微信接口獲取access_token,會耗盡access_token的。趕緊改動代碼,換成先從緩存讀取,獲取不到了,纔到微信那邊獲取。


小結


從處理問題的過程來看,業務系統打印日誌是非常重要的,像這種access_token獲取不到的場景,一定要記錄日誌,把入參和出參都打印出來,方便定位問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章