php+MySQL基于百度BAE的微信公众平台获取access_token
来源:互联网 发布:linux运维岗笔试题 编辑:程序博客网 时间:2024/05/17 08:37
微信里面的很多操作需要access_token来操作,但是access_token又是有效时间的,笔者写这个文章的时候,是7200秒的有效时间,然而微信一天允许获取access_token的次数是2000次
基于百度云BAE中的PHP+MYSQL来做的一个类似于缓存的功能,如果过期就自动更新一下,一天最多获取13次就够用了。一下是我的代码:
<?phpdefine("D",false);// 这里的appid和appsecret放到数据库里面,如果数据库里面没有的话 再做请求define("appID", "wxc87a9c7353600000");define("appsecret","6036ad004cbaa1b1ef5079ffee400000");/*替换为你自己的数据库名*/$dbname = 'gvGAiDLkiAoflAD00000';/*填入数据库连接信息*/$host = 'sqld.duapp.com';$port = 4050;$user = '192abbcce33a469dae61bbb056000000';//用户AK $pwd = '73b83a3facc046eea5b7f92662100000';//用户SK /*以上信息都可以在数据库详情页查找到*//*接着调用mysql_connect()连接服务器*/$link = @mysql_connect("{$host}:{$port}",$user,$pwd,true);if(!$link) {die("Connect Server Failed: " . mysql_error());}/*连接成功后立即调用mysql_select_db()选中需要连接的数据库*/if(!mysql_select_db($dbname,$link)) {die("Select Database Failed: " . mysql_error($link));}// 创建数据表用的,看一下结构就好了$create_table_sql = "create table if not exists system(`_id` int(10) AUTO_INCREMENT, `wx_appid` char(20), `wx_appsecret` char(36), `wx_token` char(32), `wx_access_token` text(1024),`wx_access_token_timeout` timestamp(14) default 0,PRIMARY KEY (`_id`))ENGINE=MyISAM DEFAULT CHARSET=UTF8";$query_sql = "select wx_access_token, wx_access_token_timeout from system";$ret = mysql_query($query_sql,$link);while($row = mysql_fetch_array($ret)){// 数据表里面是有且仅有一条数据$wx_access_token = $row['wx_access_token'];$wx_access_token_timeout = $row['wx_access_token_timeout'];}if(D) echo ("wx_access_token_timeout:".strtotime($wx_access_token_timeout)."<br />");if(D) echo ("wx_access_token:".$wx_access_token."<br />");if(D) echo "现在时间:";if(D) echo time();if(D) echo "<br />";// 判断access_token失效时间是否晚于现在时间减去20秒,如果晚的话 那就需要重新获取了// 为什么要算一个20秒,防止因为网络延迟问题,导致在快过期的那个时间点,导致access_token失效if(D) echo "时间比较:";if(D) var_dump (strtotime($wx_access_token_timeout) < (time() - 20));if(D) echo "<br />-----------<br />";if(strtotime($wx_access_token_timeout) < (time() - 20)){// 需要重新获取微信access_token$token_access_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".appID."&secret=".appsecret;//获取文件内容或获取网络请求的内容$res = file_get_contents($token_access_url);$result = json_decode($res, true);$end_time = $result['expires_in'] + time();$access_token = $result['access_token'];if(D) echo $end_time;if(D) echo "<br/>";if(D) echo $access_token;if(D) echo "<br/>";// 更新数据库$update_sql = "update `gvGAiDLkiAoflAD00000`.`system` set `wx_access_token`='".$access_token."', `wx_access_token_timeout` ='".date("Y-m-d H:i:s",$end_time)."' WHERE `system`.`_id`=1";if(D) echo $update_sql;$ret = mysql_query($update_sql,$link);echo $access_token;}else{echo $wx_access_token;}mysql_close($link);?>
如果有不懂的地方,代可以在写评论给我
1 0
- php+MySQL基于百度BAE的微信公众平台获取access_token
- 百度BAE搭建微信公众平台-git的使用
- 获取微信公众平台access_token
- java微信公众平台获取access_token
- 微信公众平台 获取access_token
- php 获取微信公众号access_token
- PHP 获取微信公众号的access_token
- php下基于百度BAE的微信SDK框架
- 第五篇 :微信公众平台开发实战Java版之如何获取公众号的access_token以及缓存access_token
- 第五篇 :微信公众平台开发实战Java版之如何获取公众号的access_token以及缓存access_token
- 微信公众平台开发实战Java版之如何获取公众号的access_token以及缓存access_token
- 百度BAE JAVA环境搭建属于自己的微信公众平台接口
- 关于百度BAE搭建微信公众平台git的使用
- PHP微信公众平台开:获取接口调用凭据access_token、订阅事件推、消息回复
- PHP微信公众平台接口(二)——获取access_token
- 微信公众平台开发 获得公众号的access_token
- java 微信公众平台之获取access_token
- PHP cURL获取微信公众号access_token
- 学习MOOC——《国际贸易学》的总结
- 将一个数组中的值按逆序重新存放。
- Nginx rewrite URL examples with and without redirect address
- 苹果开发 笔记(42)leftBarButtonItem
- Codeforces 555B Case of Fugitive 排序+贪心
- php+MySQL基于百度BAE的微信公众平台获取access_token
- HDU---1010-Tempter of the Bone
- GCC系列: Homebrew安装GCC和binutils
- 小贝_mysql select连接查询
- 关于Android中的service的简单描述
- 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。
- 基于ZooKeeper的分布式Session实现
- 理解hashcode
- JavaScript为什么会有 undefined值。