獲取穩定版接口調用憑據
接口說明
接口英文名
getStableAccessToken
功能描述
- 獲取公眾號全局后臺接口調用憑據,有效期最長為7200s,開發者需要進行妥善保存;
- 有兩種調用模式: 1. 普通模式,
access_token
有效期內重復調用該接口不會更新access_token
,絕大部分場景下使用該模式;2. 強制刷新模式,會導致上次獲取的access_token
失效,并返回新的access_token
; - 該接口調用頻率限制為 1萬次 每分鐘,每天限制調用 50w 次;
- 與獲取Access token獲取的調用憑證完全隔離,互不影響。該接口僅支持
POST JSON
形式的調用;
調用方式
HTTPS 調用
POST https://api.weixin.qq.com/cgi-bin/stable_token
請求參數
屬性 | 類型 | 必填 | 說明 |
---|---|---|---|
grant_type | string | 是 | 填寫 client_credential |
appid | string | 是 | 賬號唯一憑證,即 AppID,可在「微信公眾平臺 - 設置 - 開發設置」頁中獲得。(需要已經成為開發者,且賬號沒有異常狀態) |
secret | string | 是 | 賬號唯一憑證密鑰,即 AppSecret,獲取方式同 appid |
force_refresh | boolean | 否 | 默認使用 false。1. force_refresh = false 時為普通調用模式,access_token 有效期內重復調用該接口不會更新 access_token;2. 當force_refresh = true 時為強制刷新模式,會導致上次獲取的 access_token 失效,并返回新的 access_token |
返回參數
屬性 | 類型 | 說明 |
---|---|---|
access_token | string | 獲取到的憑證 |
expires_in | number | 憑證有效時間,單位:秒。目前是7200秒之內的值。 |
其他說明
access_token 的存儲與更新
access_token
的存儲空間至少要保留 512 個字符;- 建議開發者僅在
access_token
泄漏時使用強制刷新模式,該模式限制每天20次??紤]到數據安全,連續使用該模式時,請保證調用時間隔至少為30s,否則不會刷新; - 在普通模式調用下,平臺會提前5分鐘更新
access_token
,即在有效期倒計時5分鐘內發起調用會獲取新的access_token
。在新舊access_token
交接之際,平臺會保證在5分鐘內,新舊access_token
都可用,這保證了用戶業務的平滑過渡; 根據此特性可知,任意時刻發起調用獲取到的access_token
有效期至少為 5 分鐘,即expires_in
>= 300;
最佳實踐
- 在使用獲取Access token時,平臺建議開發者使用中控服務來統一獲取和刷新
access_token
。有此成熟方案的開發者依然可以復用方案并通過普通模式來調用本接口,另外請將發起接口調用的時機設置為上次獲取到的access_token
有效期倒計時5分鐘之內即可; - 根據以上特性,為減少其他開發者構建中控服務的開發成本,在普通調用模式下,平臺建議開發者將每次獲取的
access_token
在本地建立中心化存儲使用,無須考慮并行調用接口時導致意外情況發生,僅須保證至少每5分鐘發起一次調用并覆蓋本地存儲。同時,該方案也支持各業務獨立部署使用,即無須中心化存儲也可以保證服務正常運行;
access_token 泄漏緊急處理
- 使用強制刷新模式以間隔30s發起兩次調用可將已經泄漏的
access_token
立即失效,同時正常的業務請求可能會返回錯誤碼40001(access_token
過期),請妥善使用該策略。其次,需要立即排查泄漏原因,加以修正,必要時可以考慮重置appsecret
;
調用示例
示例說明: 普通模式,獲取當前有效調用憑證
請求數據示例
POST https://api.weixin.qq.com/cgi-bin/stable_token
請求示例1(不傳遞force_refresh,默認值為false):
{
"grant_type": "client_credential",
"appid": "APPID",
"secret": "APPSECRET"
}
請求示例2(設置force_refresh為false):
{
"grant_type": "client_credential",
"appid": "APPID",
"secret": "APPSECRET",
"force_refresh": false
}
返回數據示例
返回示例1:
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200
}
返回示例2:
{
"access_token":"ACCESS_TOKEN",
"expires_in":345
}
示例說明: 強制刷新模式,慎用,連續使用需要至少間隔30s
請求數據示例
POST https://api.weixin.qq.com/cgi-bin/stable_token
{
"grant_type": "client_credential",
"appid": "APPID",
"secret": "APPSECRET",
"force_refresh": true
}
返回數據示例
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200
}
錯誤碼
錯誤碼 | 錯誤碼取值 | 解決方案 |
---|---|---|
-1 | system error | 系統繁忙,此時請開發者稍候再試 |
0 | ok | ok |
40002 | invalid grant_type | 不合法的憑證類型 |
40013 | invalid appid | 不合法的 AppID ,請開發者檢查 AppID 的正確性,避免異常字符,注意大小寫 |
40125 | invalid appsecret | 無效的appsecret,請檢查appsecret的正確性 |
40164 | invalid ip not in whitelist | 將ip添加到ip白名單列表即可 |
41002 | appid missing | 缺少 appid 參數 |
41004 | appsecret missing | 缺少 secret 參數 |
43002 | require POST method | 需要 POST 請求 |
45009 | reach max api daily quota limit | 調用超過天級別頻率限制??烧{用clear_quota接口恢復調用額度。 |
45011 | api minute-quota reach limit mustslower retry next minute | API 調用太頻繁,請稍候再試 |
89503 | 此次調用需要管理員確認,請耐心等候 | |
89506 | 該IP調用求請求已被公眾號管理員拒絕,請24小時后再試,建議調用前與管理員溝通確認 | |
89507 | 該IP調用求請求已被公眾號管理員拒絕,請1小時后再試,建議調用前與管理員溝通確認 |