<?php
/*
獲取 access_token
access_token 是全局唯一接口調用憑據,開發(fā)者調用各接口時都需使用 access_token,請妥善保存。
access_token 的存儲至少要保留512個字符空間。access_token 的有效期目前為2個小時,需定時刷新,重復獲取將導致上次獲取的 access_token 失效。
公眾平臺的 API 調用所需的 access_token 的使用及生成方式說明:
為了保密 appsecrect,第三方需要一個 access_token 獲取和刷新的中控服務器。
而其他業(yè)務邏輯服務器所使用的 access_token 均來自于該中控服務器,不應該各自去刷新,否則會造成 access_token 覆蓋而影響業(yè)務;
目前 access_token 的有效期通過返回的 expires_in 來傳達,目前是7200秒之內的值。中控服務器需要根據這個有效時間提前去刷新新 access_token。
在刷新過程中,中控服務器對外輸出的依然是老 access_token,此時公眾平臺后臺會保證在刷新短時間內,新老 access_token 都可用,這保證了第三方業(yè)務的平滑過渡;
access_token 的有效時間可能會在未來有調整,所以中控服務器不僅需要內部定時主動刷新,
還需要提供被動刷新 access_token 的接口,這樣便于業(yè)務服務器在 API 調用獲知 access_token 已超時的情況下,可以觸發(fā) access_token 的刷新流程。
開發(fā)者可以使用 AppID 和 AppSecret 調用本接口來獲取 access_token。
AppID 和 AppSecret 可登錄微信公眾平臺官網-設置-開發(fā)設置中獲得(需要已經綁定成為開發(fā)者,且?guī)ぬ枦]有異常狀態(tài))。
AppSecret 生成后請自行保存,因為在公眾平臺每次生成查看都會導致 AppSecret 被重置。
注意調用所有微信接口時均需使用 https 協(xié)議。如果第三方不使用中控服務器,而是選擇各個業(yè)務邏輯點各自去刷新 access_token,那么就可能會產生沖突,導致服務不穩(wěn)定。
接口地址:
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
*/
require_once('../config.php');
echo json_encode($result);
exit();
////////////////////////////////////////////////////////////////////////////////////////////////////
function getAccessTokenFromDB()
{
GLOBAL $_mysqli;
$_sql = "SELECT accessToken, expired FROM accessToken";
$_result = $_mysqli->query($_sql);
if($row = $_result->fetch_assoc()){
$accessToken = $row['accessToken'];
$expired = $row['expired'];
if($expired > time() + 600){
return $result = array(
'accessToken' => $accessToken,
'expired' => $expired
);
}
}
}
function getAccessTokenFromWX()
{
GLOBAL $_mysqli;
$appId = APPID;
$appSecret = APPSECRET;
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appId&secret=$appSecret";
$res = https_request($url);
$res = json_decode($res);
if($res->access_token){
$id = 1;
$accessToken = $res->access_token;
$expired = $res->expires_in + time();
$_sql = "INSERT INTO accessToken (id, accessToken, expired) VALUES ('{$id}', '{$accessToken}', '{$expired}')";
$_sql = $_sql . "ON DUPLICATE KEY UPDATE accessToken=VALUES(accessToken), expired=VALUES(expired)";
$_result = $_mysqli->query($_sql);
if($_result){
return $result = array(
'accessToken' => $accessToken,
'expired' => (string)$expired //因為數據庫取出的值為字符串類型,這里為了返回的數據類型統(tǒng)一,也轉換為字符串類型輸出
);
}
}
}
?>
獲取微信access_token
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
相關閱讀更多精彩內容
- 一、Access Tokenaccess_token是公眾號的全局唯一票據,公眾號調用各接口時都需使用access...
- 一直都想搞一下微信公眾號網頁開發(fā),公司忙沒有時間自己也沒開發(fā)過所以也沒有頭緒,前兩天通過自己的摸索以及自行查找的資...
- 1、Senparc.Weixin 簡介:Senparc.Weixin SDK 是由盛派網絡(Senparc)團隊自...
- 微信有2個ACCESS_TOKEN, 1,基礎接口的token 獲取接口是 https://api.weixin....