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