微信公眾號開發(二)微信公眾號的access_token

語言: CN / TW / HK

攜手創作,共同成長!這是我參與「掘金日新計劃 · 8 月更文挑戰」的第26天,點選檢視活動詳情

微信對使用者使用開放了很多的功能,如:自定義選單介面、客服介面、獲取使用者資訊介面、使用者分組介面、群發介面,但是為了保證使用者訪問這些功能相對安全,每次訪問都需要帶上一個祕鑰去驗證身份。那麼這個祕鑰就是access_token。

在呼叫這些介面時,都需要傳入一個相同的引數 access_token,它是公眾賬號的全域性唯一票據,它是介面訪問憑證。

access_token是公眾號的全域性唯一票據,公眾號呼叫各介面時都需使用access_token。開發者需要進行妥善儲存。

access_token的儲存至少要保留512個字元空間。

access_token的有效期目前為2個小時,需定時重新整理,重複獲取將導致上次獲取的 access_token失效。

Access_token是微信端給你生成的,需要呼叫微信端介面去獲取這個資料,當你獲取到這個資料之後,你自然就可以去呼叫其他的介面了。

微信生成access_token介面呼叫每天使用限制次數的(每天2000次),但其實正常我們兩個小時獲取一次的話,可能一天也就呼叫十幾次。

這裡大概就需要說一下,關於access_token,每次獲取完成,將其,與獲取時間存入資料庫中,每次呼叫需要使用到access_token介面的方法的時候,去資料庫裡邊取,同時判斷是否過期,如果過期,重新請求access_token。基本就是這樣。

也就是說,access_token這個玩意是微信給你生成的,自生成之時起,有效期兩個小時,超時失效。每次獲取存資料庫,呼叫的時候判斷過沒過期,過期,重新獲取。

上面大概就是我對access_token的理解。下面我大概就是重複一下官方文件對於access_token獲取的一些複述,加上我自己的一些理解。

有需要看官方文件的同學,請移步《微信公眾平臺官方文件

介面呼叫請求說明

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資料包給公眾號:

{"access_token":"ACCESS_TOKEN","expires_in":7200}

| 引數 | 說明 | | ------------ | ----------- | | access_token | 獲取到的憑證 | | expires_in | 憑證有效時間,單位:秒 |

錯誤時微信會返回錯誤碼等資訊,JSON資料包示例如下(該示例為AppID無效錯誤):

{"errcode":40013,"errmsg":"invalid appid"}

返回錯誤碼說明:

| 返回碼 | 說明 | | ------- | ------------------------------------------------------- | | -1 | 系統繁忙,此時請開發者稍候再試 | | 0 | 請求成功 | | 40001 | AppSecret錯誤或者AppSecret不屬於這個公眾號,請開發者確認AppSecret的正確性 | | 40002 | 請確保grant_type欄位值為client_credential | | 40164 | 呼叫介面的IP地址不在白名單中,請在介面IP白名單中進行設定。(小程式及小遊戲呼叫不要求IP地址在白名單內。) | | 89503 | 此IP呼叫需要管理員確認,請聯絡管理員 | | 89501 | 此IP正在等待管理員確認,請聯絡管理員 | | 89506 | 24小時內該IP被管理員拒絕呼叫兩次,24小時內不可再使用該IP呼叫 | | 89507 | 1小時內該IP被管理員拒絕呼叫一次,1小時內不可再使用該IP呼叫 |

最後放一下,我呼叫微信獲取access_token的介面:

/**      * @name 獲取微信access_token      */     public function getAccessToken()     {         $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appid."&secret=".$this->appsecrt;         $info  = file_get_contents($url);          // 解析完成,這是一個物件         $obj = json_decode($info);          $this->access_token = $obj->access_token;     }

有好得 建議,請在下方輸入你的評論。

歡迎訪問個人部落格 https://guanchao.site

歡迎訪問我的小程式:開啟微信->發現->小程式->搜尋“時間裡的”