六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 652|回复: 0

thinkphp 学习笔记-缓存微信公众号access_token

[复制链接]

升级  72%

8

主题

8

主题

8

主题

童生

Rank: 1

积分
36
 楼主| 发表于 2014-12-4 18:31:04 | 显示全部楼层 |阅读模式
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


您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表