您的位置:首页 > 移动开发 > 微信开发

PHP+TP框架实现微信获取JS-SDK所需的access_token,并全局缓存

2017-06-27 00:18 671 查看
一.准备工作.

1.将需要使用到的微信配置放在config.php配置文件中方便获取.(我使用的是微信测试号)

return array(
//'配置项'=>'配置值'
'appID'=>'wxf58**********f2e',
'appSecret'=>'2dd3de4141aadd088**********6264b'
);


2.简介:access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。每天刷新access_token的次数有限,所以我们需要全局缓存access_token,避免频繁刷新access_token出现问题,影响业务.

二.获取access_token,并全局缓存.

我在tp框架Application/Home/Common/function.php中定义公共方法getAccessToken方法获取access_token并全局缓存.

//该公共方法获取和全局缓存js-sdk需要使用的access_token
function getAccessToken(){
//我们将access_token全局缓存在文件中,每次获取的时候,先判断是否过期,如果过期重新获取再全局缓存
//我们缓存的在文件中的数据,包括access_token和该access_token的过期时间戳.
//获取缓存的access_token
$access_token_data = json_decode(F('access_token'),true);

//判断缓存的access_token是否存在和过期,如果不存在和过期则重新获取.
if($access_token_data !== null && $access_token_data['access_token'] && $access_token_data['expires_in'] > time()){

return $access_token_data['access_token'];

}else{
//重新获取access_token,并全局缓存
$curl = curl_init();

curl_setopt($curl,CURLOPT_URL,'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='
.C('appID').'&secret='.C('appSecret'));

curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);

//获取access_token
$data = json_decode(curl_exec($curl),true);
if($data != null && $data['access_token']){
//设置access_token的过期时间,有效期是7200s
$data['expires_in'] = $data['expires_in'] + time();

//将access_token全局缓存,快速缓存到文件中.
F('access_token',json_encode($data));

//返回access_token
return $data['access_token'];

}else{
exit('微信获取access_token失败');
}
}
}


以上是获取js-sdk所需的access_token,并全局缓存的流程.若果有错误请大家指出,谢谢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息