class class_weixin

{

var $appid = APPID;

var $appsecret = APPSECRET;

//构造函数,获取Access Token

public function __construct($appid = NULL, $appsecret = NULL)

{

if($appid && $appsecret){

$this->appid = $appid;

$this->appsecret = $appsecret;

}

//1. 数据库形式

/*

DROP TABLE IF EXISTS `wx_token`;

CREATE TABLE IF NOT EXISTS `wx_token` (

`id` int(1) NOT NULL,

`type` varchar(20) NOT NULL,

`expire` varchar(16) NOT NULL,

`value` varchar(600) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `wx_token` (`id`, `type`, `expire`, `value`) VALUES

(1, 'access_token', '1425534992', 't3oyW9fRnOWKQHQhZXoEH-pgThhjmnCqTVpaLyUD'),

(2, 'jsapi_ticket', '', '');

*/

$con = mysql_connect(MYSQLHOST.':'.MYSQLPORT, MYSQLUSER, MYSQLPASSWORD);

mysql_select_db(MYSQLDATABASE, $con);

$result = mysql_query("SELECT * FROM `wx_token` WHERE `type` = 'access_token'");

while($row = mysql_fetch_array($result))

{

$this->access_token = $row['value'];

$this->expires_time = $row['expire'];

break;

}

if (time() > ($this->expires_time + 3600)){

$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appid."&secret=".$this->appsecret;

$res = $this->http_request($url);

$result = json_decode($res, true);

$this->access_token = $result["access_token"];

$this->expires_time = time();

mysql_query("UPDATE `wx_token` SET `expire` = '$this->expires_time', `value` = '$this->access_token' WHERE `type` = 'access_token';");

}

//2. 缓存形式

if (isset($_SERVER['HTTP_APPNAME'])){        //SAE环境,需要开通memcache

$mem = memcache_init();

}else {                                        //本地环境,需已安装memcache

$mem = new Memcache;

$mem->connect('localhost', 11211) or die ("Could not connect");

}

$this->access_token = $mem->get($this->appid);

if (!isset($this->access_token) || empty($this->access_token)){

$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appid."&secret=".$this->appsecret;

$res = $this->http_request($url);

$result = json_decode($res, true);

$this->access_token = $result["access_token"];

$mem->set($this->appid, $this->access_token, 0, 3600);

}

//3. 本地写入

$res = file_get_contents('access_token.json');

$result = json_decode($res, true);

$this->expires_time = $result["expires_time"];

$this->access_token = $result["access_token"];

if (time() > ($this->expires_time + 3600)){

$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appid."&secret=".$this->appsecret;

$res = $this->http_request($url);

$result = json_decode($res, true);

$this->access_token = $result["access_token"];

$this->expires_time = time();

file_put_contents('access_token.json', '{"access_token": "'.$this->access_token.'", "expires_time": '.$this->expires_time.'}');

}

//4. 实时拉取

$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appid."&secret=".$this->appsecret;

$res = $this->http_request($url);

$result = json_decode($res, true);

$this->access_token = $result["access_token"];

$this->expires_time = time();

}

php 微信 token 刷新,自动更新微信access token相关推荐

  1. jq 点击按钮跳转到微信_实现点击复制微信号并自动打开微信加好友

    原地址:https://www.xuewangzhan.net/jquery/21100.html 复制按钮xyz2018 点击复制 clipboard.on('success', function( ...

  2. 实现点击复制微信号并自动打开微信加好友

    近期,有建网站客户要求实现在自己的手机网站上实现点击复制微信号并自动打开微信加好友的功能.怎么在自己建网站时,制作出这样的点击复制微信号并自动打开微信加好友功能呢? 分享一下实现点击复制微信号并自动打 ...

  3. 微信小程序自动更新版本

    PS: 小程序发布版本后正常老用户是不能直接看到的新版本的, 需要通过:删除小程序浏览记录.从我的小程序中移除.退出微信账号重新登录这些办法才能看到新版本内容 这是因为小程序有静默更新机制: 未启动时 ...

  4. python自动发送微信文件_python自动发微信监控报警

    我们每个人每天都是在用微信,在程序开发过程中,我们会需要监控我们的程序,发短信监控收费,发邮件懒得看,发微信是最好的方式,而且是免费的.发现个非常好用的python库:wxpy.wxpy基于itcha ...

  5. python自动发微信新闻网_python自动发微信监控报警

    我们每个人每天都是在用微信,在程序开发过程中,我们会需要监控我们的程序,发短信监控收费,发邮件懒得看,发微信是最好的方式,而且是免费的.发现个非常好用的python库:wxpy.wxpy基于itcha ...

  6. html添加微信号,html代码点击复制微信号并自动打开微信添加好友

    需要注意的是 xyz2018 这部分不能设置为"display:none",否则无法实现复制,如果不想展现id="target"的内容可以这样写 #target ...

  7. html代码点击复制微信号并自动打开微信添加好友

    完整代码块 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  8. 服务器客服获取小程序头像,微信小程序自动获取微信用户头像

    Xml页面: css页面: .userinfo { margin-left: 48rpx; margin-top: 48rpx; width: 120rpx; height: 120rpx; back ...

  9. 360oauth token是什么意思_Oauth/access token

    oauth/access_token 第三放应用使用开始的request_token来换取用户授权过的Access_token URL 格式 标准的OAuth http返回格式 HTTP请求方式 PO ...

  10. API v3版微信支付平台证书获取与自动更新

    API v3版微信支付平台证书获取与自动更新 关于微信证书 获取平台证书 证书自动更新 首次下载证书 关于微信证书 微信支付开发有两份证书. ♥ 商户证书:商户平台证书私钥可以对请求进行签名,微信服务 ...

最新文章

  1. FireDAC 下的 Sqlite [7] - 备份、优化、事务(Transaction)
  2. 适合新手入门的漏洞调试与分析—CVE-2010-3333
  3. 与年轻人“玩在一起”的QQ音乐,正抢跑音娱赛道?
  4. 聊城大学计算机应用基础函授,聊城大学试题计算机应用基础试题
  5. [BZOJ 1046] [HAOI2007] 上升序列 【DP】
  6. python 文本相似度_python实现余弦相似度文本比较
  7. Linux网络设备驱动概述
  8. 【BZOJ-2768】冠军调查 最小割
  9. mysql 程序编码_MySql编码
  10. readelf使用说明
  11. Navicat基础mysql语法
  12. Oracle隐含参数查看
  13. Kotlin第二章:kotlin基础
  14. msvcr120.dll丢失怎样修复?msvcr120.dll文件修复方法
  15. 法兰克服务器电源维修,FANUC电源模块故障维修
  16. KBU808-ASEMI适配大功率开关电源整流桥
  17. tp获取执行的sql语句
  18. Linux Snap 命令
  19. 【WPS在线文档转换】
  20. ssm中报错: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type a

热门文章

  1. 【IRA/GSM/UCS2】the difference of IRA/GSM/UCS2 character set
  2. svn sync主从同步学习
  3. android显示当前时间
  4. PHP函数和MySQL数据库
  5. java t输出_java --输入输出
  6. 在本地Windows系统下搭建Apollo配置中心
  7. JVM监控及诊断工具GUI篇之Arthas(二):jvm相关指令
  8. Oracle表连接方式总结
  9. Oracle踩坑之解决数值0.2只显示成.2方法
  10. spring源码-@Autowired、@Resource注解底层原理