|
ccess_token作为微信的全局票据,在高级接口中需要频繁调用,其有效期为7200秒,即2小时,而微信官方对调用Token的次数有限制(参见接口频率限制说明),获取access_token每日限额为2000次,测试号只有200次。如果每次响应都调用access_token,则有可能
随着用户的增多超过调用次数,影响微信公众平台的使用。
过我从自定义菜单插件中,把调取方法取出,弄成一个缓存的函数,供其它地方调用。
[mw_shl_code=php,true]/**
* 根据微信appID,appsecret 获取access_token 并缓存7200s
* @param string $appID 微信appID
* @param string $appsecret 微信appsecret
* @param string $token 哪个用户的
* @return string $access_token 返回公众号access_token
* @author bezal
*/
function get_access_token($appID,$appsecret,$token){
static $access_token;
/* 获取缓存数据 */
$access_token = S($token.'weixin_access_token');
if($access_token) { //已缓存,直接使用
return $access_token;
} else { //获取access_token
$url_get =
'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='
. $appID . '&secret=' . $appsecret;
$ch1 = curl_init ();
$timeout = 5;
curl_setopt ( $ch1, CURLOPT_URL, $url_get );
curl_setopt ( $ch1, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch1, CURLOPT_CONNECTTIMEOUT, $timeout );
curl_setopt ( $ch1, CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt ( $ch1, CURLOPT_SSL_VERIFYHOST, false );
$accesstxt = curl_exec ( $ch1 );
curl_close ( $ch1 );
$access = json_decode ( $accesstxt, true );
// 缓存数据7200秒
S($token.'weixin_access_token',$access['access_token'],7200);
return $access['access_token'];
}
}[/mw_shl_code]
摘自:http://weibo.com/p/1001603746083913246704
|
|