最近开发微信公众平台,公众号调用各接口时都需使用access_token,access_token是公众号的全局唯一接口调用凭据,开发时需要进行妥善保存。 access_token有效期为7200秒 ,重复获取将导致上次获取的access_token失效。
由于微信对获取access_token的api调用次数做了限制,建议开发者全局存储与更新access_token,频繁刷新access_token会导致api调用受限,影响自身业务。
那么有什么好的解决access_token存储和刷新的办法呢? 我的办法是:计划任务定时刷新获取access_token,然后将access_token保存到服务器本地,保存方式可以是文件、数据库或缓存中。
下面我使用PHP来获取access_token,并保存到本地文件中。建立一个access.php,代码如下:
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".AppID."&secret=".AppSecret;
$result = http_request($url);
//生成文件,保存token
$dir = __DIR__; //真实路径,crontab命令的php执行在cli模式下,不能正确识别相对路径,所以使用__DIR__
$filename = $dir."/access_token.php";
create_file($filename, $result);
function http_request($url,$data = null){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
//生成文件
function create_file($filename, $content){
$fp = fopen($filename, "w");
fwrite($fp, "" . $content);
fclose($fp);
}
以上代码中AppID和AppSecret这两个常量是由微信公众平台提供,可以登录到微信公众平台的基本配置里获取。获取到的access_token被保存到文件access_token.php中,注意这个文件内容不要被用户访问到。
接下来,我们设置定时任务,我们以Linux的CentOS为例,使用crontab设置计划任务。
5 * * * * /usr/local/bin/php -f /home/web/access.php >> /dev/null 2>&1
以上命令设置了每隔1小时,即每小时的第05分钟执行access.php。
这样,我们就可以保证access_token的正常获取和使用,不用频繁的去刷新微信服务器了。
PHP定时任务获取微信access_token的例子
时间: 2024-11-05 16:24:37
PHP定时任务获取微信access_token的例子的相关文章
PHP定时任务获取微信access_token的方法_php技巧
本文实例讲述了PHP定时任务获取微信access_token的方法.分享给大家供大家参考,具体如下: 微信access_token在开发时会变的好像是几分种不一样了,这里我们来介绍关于PHP定时任务获取微信access_token的方法. 最近开发微信公众平台,公众号调用各接口时都需使用access_token,access_token是公众号的全局唯一接口调用凭据,开发时需要进行妥善保存. access_token有效期为7200秒 ,重复获取将导致上次获取的access_token失效. 由
wx-大家感觉这种获取微信Access_Token方法如何
问题描述 大家感觉这种获取微信Access_Token方法如何 public class WxTokenUtil { private static String FileName = "WxTokenUtil.properties"; private static String APPID = "fsdafsd"; private static String APPSECRET = "dfsdsaf"; public synchronized s
PHP获取微信access_token后全局缓存与更新
access_token是微信公众号开发的全局唯一票据,公众号开发必须要用到access_token.access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效. access_token的请求次数是有限制的,所以不能每次都重新请求,只有将它缓存到本地了. function accessToken() { $tokenFile = "./access_token.txt";//缓存文件名 $data = jso
微信公众号开发系列-获取微信OpenID
在微信开发时候在做消息接口交互的时候需要使用带微信加密ID(OpenId),下面讲讲述2中类型方式获取微信OpenID,接收事件推送方式和网页授权获取用户基本信息方式获取. 1.通过接收被动消息方式获取OpenId(接收事件推送方式),以下事件中都可以获取到OpenID 关注/取消关注事件 用户在关注与取消关注公众号时,微信会把这个事件推送到开发者填写的URL.方便开发者给用户下发欢迎消息或者做帐号的解绑. 微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次 关于重试的消息排
哪位大神知道怎么获取微信群红包抢完后的结果,网页微信或者电脑微信
问题描述 哪位大神知道怎么获取微信群红包抢完后的结果,网页微信或者电脑微信我在winformC#开发的. 解决方案 解决方案二:如果有什么接口调用数据也可以..就是过不了这个难关.不知道从哪里获取解决方案三:哪位大神知道请指导一下..或者有例子发一个给我..红包答谢...解决方案四:这应该去安卓或者IOS论坛里去问吧.解决方案五:引用3楼sgyiliya的回复: 这应该去安卓或者IOS论坛里去问吧. 我是在winform里写他个程序想获取到这些红包详情,在电脑里用的,不是手机上用的.解决方案六:
Magicodes.WeiChat——使用OAuth 2.0获取微信用户信息
使用Magicodes.WeiChat,可以很方便的获取到微信用户的信息.在使用OAuth 2.0之前,你先需要做以下操作: 1)在开发者中心修改[网页授权获取用户基本信息],在弹出的界面输入自己的根域名.比如:weichat.chinacloudsites.cn 如下图所示: 2)配置菜单或者链接(如果使用特性"WeChatOAuth",本步骤可以略过,这里只是介绍下原理,具体请参考步骤3的说明).Magicodes.WeiChat在控制器WeiChatController中进行处理
Android 如何获取微信朋友圈数据
问题描述 Android 如何获取微信朋友圈数据 最近有个项目,要实现获取微信朋友圈的数据!看了微信开放平台,目前还想没有需提供相应的接口! 有没有什么好的实现方式? 望提供一下解决思路,谢谢大家! 解决方案 微信开放平台目前未开放朋友圈数据,目前无法取到数据,或者你可以试试抓包和解包
微信运动接口-怎样获取微信运动里面的步数和排行榜信息
问题描述 怎样获取微信运动里面的步数和排行榜信息 我的应用要获取微信运动里面的步数和排行榜信息,请问微信有没有提供这样一个接口呢 解决方案 基于Xposed修改微信运动步数 解决方案二: 步数一般都是读的系统的一些信息.http://bbs.feng.com/read-htm-tid-9069030.html 但是排行榜应该是微信后台服务器处理的.需要破解微信App等来看接口
微信公众号openid-如何获取微信公众号的openid
问题描述 如何获取微信公众号的openid 初学者,希望能有好心人详细的帮忙讲解一下,有人说网络授权可以获取,但是没有懂.最好能私聊,谢谢啦 解决方案 获取openid 有两种办法 , 一个是当用户关注的时候可以获取他的openid 在关注事件里面获得,二就是授权了,两种都可以.第一种的话就是在 用户关注的时候 你把他的openid 写到数据库中存起来备用.就算他取消关注了 也可以发红包给openid. 第二种授权就是一个按钮 上面写着 是否将头像. 信息可以让某某公众号获取(大概就是这个意思)