本文介紹微信公衆平臺下Access Token的概念及獲取方法。php
access_token是公衆號的全局惟一票據,公衆號調用各接口時都需使用access_token。正常狀況下access_token有效期爲7200秒,重複獲取將致使上次獲取的access_token失效。json
公衆號可使用AppID和AppSecret調用本接口來獲取access_token。AppID和AppSecret可在開發模式中得到(須要已經成爲開發者,且賬號沒有異常狀態)。注意調用全部微信接口時均需使用https協議。api
接口調用請求說明瀏覽器
http請求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
參數說明服務器
參數 | 是否必須 | 說明 |
---|---|---|
grant_type | 是 | 獲取access_token填寫client_credential |
appid | 是 | 第三方用戶惟一憑證 |
secret | 是 | 第三方用戶惟一憑證密鑰,既appsecret |
返回說明微信
正常狀況下,微信會返回下述JSON數據包給公衆號:app
{"access_token":"ACCESS_TOKEN","expires_in":7200}
參數 | 說明 |
---|---|
access_token | 獲取到的憑證 |
expires_in | 憑證有效時間,單位:秒 |
錯誤時微信會返回錯誤碼等信息,JSON數據包示例以下(該示例爲AppID無效錯誤):微信公衆平臺
{"errcode":40013,"errmsg":"invalid appid"}
在微信後臺使用找到高級功能-開發模式curl
成爲開發者以後,就能夠看到appid和appsecert了工具
若是沒有url和Token , 你能夠先用方倍工做室的下面的測試經過
URL: http://discuz.comli.com/test.php
Token: weixin
程序實現以下
$appid = ""; $appsecret = ""; $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); $jsoninfo = json_decode($output, true); $access_token = $jsoninfo["access_token"];
你也能夠直接在瀏覽器地址欄中,拼接出地址,執行後,得到以下數據
{"access_token":"N2L7KXa084WvelONYjkJ_traBMCCvy_UKmpUUzlrQ0EA2yNp3Iz6eSUrRG0bhaR_viswd50vDuPkY5nG43d1gbm-olT2KRMxOsVE08RfeD9lvK9lMguNG9kpIkKGZEjIf8Jv2m9fFhf8bnNa-yQH3g","expires_in":7200}
參數說明以下
參數 |
說明 |
access_token |
獲取到的憑證 |
expires_in |
憑證有效時間,單位:秒 |
或者使用官方的接口調試工具,地址爲:
點擊檢查問題得,獲得
這樣也得到了access token
公衆號每次調用接口時,可能得到正確或錯誤的返回碼,開發者能夠根據返回碼信息調試接口,排查錯誤。
全局返回碼說明以下:
返回碼 | 說明 |
---|---|
-1 | 系統繁忙 |
0 | 請求成功 |
40001 | 獲取access_token時AppSecret錯誤,或者access_token無效 |
40002 | 不合法的憑證類型 |
40003 | 不合法的OpenID |
40004 | 不合法的媒體文件類型 |
40005 | 不合法的文件類型 |
40006 | 不合法的文件大小 |
40007 | 不合法的媒體文件id |
40008 | 不合法的消息類型 |
40009 | 不合法的圖片文件大小 |
40010 | 不合法的語音文件大小 |
40011 | 不合法的視頻文件大小 |
40012 | 不合法的縮略圖文件大小 |
40013 | 不合法的APPID |
40014 | 不合法的access_token |
40015 | 不合法的菜單類型 |
40016 | 不合法的按鈕個數 |
40017 | 不合法的按鈕個數 |
40018 | 不合法的按鈕名字長度 |
40019 | 不合法的按鈕KEY長度 |
40020 | 不合法的按鈕URL長度 |
40021 | 不合法的菜單版本號 |
40022 | 不合法的子菜單級數 |
40023 | 不合法的子菜單按鈕個數 |
40024 | 不合法的子菜單按鈕類型 |
40025 | 不合法的子菜單按鈕名字長度 |
40026 | 不合法的子菜單按鈕KEY長度 |
40027 | 不合法的子菜單按鈕URL長度 |
40028 | 不合法的自定義菜單使用用戶 |
40029 | 不合法的oauth_code |
40030 | 不合法的refresh_token |
40031 | 不合法的openid列表 |
40032 | 不合法的openid列表長度 |
40033 | 不合法的請求字符,不能包含\uxxxx格式的字符 |
40035 | 不合法的參數 |
40038 | 不合法的請求格式 |
40039 | 不合法的URL長度 |
40050 | 不合法的分組id |
40051 | 分組名字不合法 |
41001 | 缺乏access_token參數 |
41002 | 缺乏appid參數 |
41003 | 缺乏refresh_token參數 |
41004 | 缺乏secret參數 |
41005 | 缺乏多媒體文件數據 |
41006 | 缺乏media_id參數 |
41007 | 缺乏子菜單數據 |
41008 | 缺乏oauth code |
41009 | 缺乏openid |
42001 | access_token超時 |
42002 | refresh_token超時 |
42003 | oauth_code超時 |
43001 | 須要GET請求 |
43002 | 須要POST請求 |
43003 | 須要HTTPS請求 |
43004 | 須要接收者關注 |
43005 | 須要好友關係 |
44001 | 多媒體文件爲空 |
44002 | POST的數據包爲空 |
44003 | 圖文消息內容爲空 |
44004 | 文本消息內容爲空 |
45001 | 多媒體文件大小超過限制 |
45002 | 消息內容超過限制 |
45003 | 標題字段超過限制 |
45004 | 描述字段超過限制 |
45005 | 連接字段超過限制 |
45006 | 圖片連接字段超過限制 |
45007 | 語音播放時間超過限制 |
45008 | 圖文消息超過限制 |
45009 | 接口調用超過限制 |
45010 | 建立菜單個數超過限制 |
45015 | 回覆時間超過限制 |
45016 | 系統分組,不容許修改 |
45017 | 分組名字過長 |
45018 | 分組數量超過上限 |
46001 | 不存在媒體數據 |
46002 | 不存在的菜單版本 |
46003 | 不存在的菜單數據 |
46004 | 不存在的用戶 |
47001 | 解析JSON/XML內容錯誤 |
48001 | api功能未受權 |
50001 | 用戶未受權該api |
公衆號調用接口並非無限制的。爲了防止公衆號的程序錯誤而引起微信服務器負載異常,默認狀況下,每一個公衆號調用接口都不能超過必定限制,當超過必定限制時,調用對應接口會收到以下錯誤返回碼:
{"errcode":45009,"errmsg":"api freq out of limit"}
各接口調用頻率限制以下:
接口 | 每日限額 |
---|---|
獲取access_token | 2000 |
自定義菜單建立 | 1000 |
自定義菜單查詢 | 10000 |
自定義菜單刪除 | 1000 |
建立分組 | 1000 |
獲取分組 | 1000 |
修改分組名 | 1000 |
移動用戶分組 | 100000 |
上傳多媒體文件 | 5000 |
下載多媒體文件 | 10000 |
發送客服消息 | 500000 |
獲取帶參數的二維碼 | 10000 |
獲取關注者列表 | 500 |
獲取用戶基本信息 | 5000000 |
獲取網頁受權access_token | 2000000 |
刷新網頁受權access_token | 2000000 |
網頁受權獲取用戶信息 | 2000000 |