<?php
/*
获取 access_token
access_token 是全局唯一接口调用凭据,开发者调用各接口时都需使用 access_token,请妥善保存。
access_token 的存储至少要保留512个字符空间。access_token 的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的 access_token 失效。
公众平台的 API 调用所需的 access_token 的使用及生成方式说明:
为了保密 appsecrect,第三方需要一个 access_token 获取和刷新的中控服务器。
而其他业务逻辑服务器所使用的 access_token 均来自于该中控服务器,不应该各自去刷新,否则会造成 access_token 覆盖而影响业务;
目前 access_token 的有效期通过返回的 expires_in 来传达,目前是7200秒之内的值。中控服务器需要根据这个有效时间提前去刷新新 access_token。
在刷新过程中,中控服务器对外输出的依然是老 access_token,此时公众平台后台会保证在刷新短时间内,新老 access_token 都可用,这保证了第三方业务的平滑过渡;
access_token 的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,
还需要提供被动刷新 access_token 的接口,这样便于业务服务器在 API 调用获知 access_token 已超时的情况下,可以触发 access_token 的刷新流程。
开发者可以使用 AppID 和 AppSecret 调用本接口来获取 access_token。
AppID 和 AppSecret 可登录微信公众平台官网-设置-开发设置中获得(需要已经绑定成为开发者,且帐号没有异常状态)。
AppSecret 生成后请自行保存,因为在公众平台每次生成查看都会导致 AppSecret 被重置。
注意调用所有微信接口时均需使用 https 协议。如果第三方不使用中控服务器,而是选择各个业务逻辑点各自去刷新 access_token,那么就可能会产生冲突,导致服务不稳定。
接口地址:
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 //因为数据库取出的值为字符串类型,这里为了返回的数据类型统一,也转换为字符串类型输出
);
}
}
}
?>
获取微信access_token
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 一、Access Tokenaccess_token是公众号的全局唯一票据,公众号调用各接口时都需使用access...
- 一直都想搞一下微信公众号网页开发,公司忙没有时间自己也没开发过所以也没有头绪,前两天通过自己的摸索以及自行查找的资...
- 1、Senparc.Weixin 简介:Senparc.Weixin SDK 是由盛派网络(Senparc)团队自...
- 微信有2个ACCESS_TOKEN, 1,基础接口的token 获取接口是 https://api.weixin....