这里有新鲜出炉的精品教程,程序狗速度看过来!
微信(英文名:wechat)是腾讯公司于 2011 年 1 月 21 日推出的一个为智能终端提供即时通讯服务的免费应用程序,微信支持跨通信运营商、跨操作系统平台通过网络快速发送免费语音短信、视频、图片和文字,同时,也可以使用通过共享流媒体内容的资料和基于位置的社交插件 "摇一摇"、"漂流瓶"、"朋友圈"、"公众平台"、"语音记事本" 等服务插件。
这篇文章主要介绍了 PHP 定时任务获取微信 access_token 的方法, 涉及 php 基于 curl 动态获取 access_token 及 CentOS 下 crontab 设置计划任务的相关操作技巧, 需要的朋友可以参考下
本文实例讲述了 PHP 定时任务获取微信 access_token 的方法。分享给大家供大家参考,具体如下:
微信 access_token 在开发时会变的好像是几分种不一样了,这里我们来介绍关于 PHP 定时任务获取微信 access_token 的方法。
最近开发微信公众平台,公众号调用各接口时都需使用 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 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0806/342155.html