来源:https://blog.csdn.net/sct_t/article/details/53002611

我们知道请求access_Token会返回这样一个json,包括access_token(凭证)和expires_in(凭证的时限)

在我们需要access_token的时候没必要每次都请求服务器,因为这个凭证在2小时内都是有效的,那么就要存起来,有几种方法可以选择:1.Redis; 2.数据库;3文件存储.

我使用的是数据库存储的方式:

--
-- 表的结构 `accesstoken`
--
CREATE TABLE IF NOT EXISTS `accesstoken` (
`A_ID` int(11) NOT NULL,
`A_Token` varchar(600) COLLATE utf8_bin NOT NULL,
`A_Date` int(11) NOT NULL,
`A_Update` int(11) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

  那么下面是php的代码:

       //获取 access_token  当然在这之前请连接好自己的数据库
function Curl($appid,$appsecret) {
$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
$ch = curl_init();
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$dataBlock = curl_exec($ch);//这是json数据
curl_close($ch);
$res = json_decode($dataBlock, true); //接受一个json格式的字符串并且把它转换为 PHP 变量 return $res['access_token'];
}
//将令牌插入数据库
function serilizable(){
$appid="你自己的";
$appsecret="你自己的";
$sql="select A_ID,A_Token,A_Date from accesstoken order by A_ID desc";
$rs=mysql_query($sql);
$times=time();//当前时间
$row=mysql_fetch_array($rs);
$rownum=mysql_num_rows($rs);
//数据时间-当前时间 小于800s
if($rownum == 0 ){//若无数据 那么获取令牌,存入数据库
$timestamp=time()+6000;//100分钟后
$token= Curl($appid,$appsecret);
$sqlin="insert into accesstoken(A_Token,A_Date) values('$token','$timestamp')";
mysql_query($sqlin);
return $token;
///return $rownum;
}else{ //超过数据的时间,那么重新获取令牌
if($row['A_Date'] < $times){
$token= Curl($appid,$appsecret);
$timestamp=time()+6000;//100分钟后
$sqlu="UPDATE `accesstoken` SET `A_Token`='$token',`A_Date`='$timestamp' WHERE A_ID = '$row[A_ID]' ";
mysql_query($sqlu);
return $token;
}else//没超过,则从数据库取
return $row[A_Token]; } }

  

-如何存储并定时更新access_token的更多相关文章

  1. 微信硬件平台(七)微信开发--如何存储并定时更新access_token

    https://blog.csdn.net/sct_t/article/details/53002611 我们知道请求access_Token会返回这样一个json,包括access_token(凭证 ...

  2. celery介绍、架构、快速使用、包结构,celery执行异步、延迟、定时任务,django中使用celery,定时更新首页轮播图效果实现,数据加入redis缓存的坑及解决

    今日内容概要 celery介绍,架构 celery 快速使用 celery包结构 celery执行异步任务 celery执行延迟任务 celery执行定时任务 django中使用celery 定时更新 ...

  3. iOS 属性修饰符记录 --不定时更新

    重新审视了一下OC在属性修饰符,特意记录一下来.以后不定时更新 > retain:只有在非ARC下才会有效,所有如果在ARC下使用了retain修饰也白搭 如以下的data属性用retain修饰 ...

  4. linux下svn定时更新项目

    方法一.用shell脚本定时更新项目   1.进入网站的根目录,假设项目位置放在/var/www/test cd /var/www/test   2.建立脚本文件update.sh,分两步进行.首先利 ...

  5. ASP.NET中设置一个定时器来定时更新 转

    asp.net 定时器 比较少用,  中国红木网这是一个相当实用的功能,有了RSS博客镜像,就不需要在多处同时发布博客日志了.比如你同时在新浪上有自己的博客,又同时有自己的个人博客站点,那么你只需要在 ...

  6. Vivado_MicroBlaze_问题及解决方法_汇总(不定时更新)

    Vivado_MicroBlaze_问题及解决方法_汇总(不定时更新) 标签: Vivado 2015-07-03 14:35 4453人阅读 评论(0) 收藏 举报  分类: 硬件(14)  版权声 ...

  7. Java日志组件logback使用:加载非类路径下的配置文件并设置定时更新

    Java日志组件logback使用:加载非类路径下的配置文件并设置定时更新 摘自: https://blog.csdn.net/johnson_moon/article/details/7887449 ...

  8. [Android Traffic] 调整定时更新的频率(C2DM与退避算法)

    转载自: http://blog.csdn.net/kesenhoo/article/details/7395253 Minimizing the Effect of Regular Updates[ ...

  9. Java专业技能面试问题(不定时更新)

    刚看到园友五月的仓颉<面试感悟----一名3年工作经验的程序员应该具备的技能>感觉很不错,不论是为面试跳槽准备,还是打算深化精进自己的技术都可以参考一下.面向工资编程多少也有点道理,虽然技 ...

随机推荐

  1. apt could not get lock

    很多次遇到,就是记不住. sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock sudo rm /var/lib/apt/li ...

  2. react-native中的图片

    静态图片资源 React Native 提供了一个统一的方式来管理 iOS 和 Android 应用中的图片.要往 App 中添加一个静态图片, 只需把图片文件放在代码文件夹中某处,然后像下面这样去引 ...

  3. 使用bedtools提取vcf多个位置的变异(extract multi-region of genotypes by bedtools)

    1.下载安装bedtools: 2.生成bed文件:标准的bed文件格式如下: chr7 127471196 127472363 Pos1 0 + 127471196 127472363 255,0, ...

  4. mysql中使用存储过程方法中的注意事项

    public function getFxOrderList($openId,$condition='',$curentPage=1,$pagesize =10){ return $this-> ...

  5. Luogu P1117 [NOI2016]优秀的拆分

    题目链接 \(Click\) \(Here\) 这题质量不错,就是暴力分有点足\(hhhhhhhh\),整整有\(95\)分. (搞得我写完暴力都不想写正解直接理解思路之后就直接水过去了\(QwQ\) ...

  6. (链表) 83. Remove Duplicates from Sorted List

    Given a sorted linked list, delete all duplicates such that each element appear only once. Example 1 ...

  7. lucene之中文分词及其高亮显示(五)

    中文分词:即换个分词器 Analyzer analyzer = new StandardAnalyzer();// 标准分词器     换成  SmartChineseAnalyzer analyze ...

  8. qml性能优化(来源于群友分享);

    Qt quick性能优化 使用时间驱动 避免定时轮询: 使用信号槽形式: 使用多线程 C++; QML WorkerScript元件: 使用Qt Quick Compiler 只需要再PRO文件中添加 ...

  9. SVN提交前准备

    操作步骤1: 操作步骤2: 操作步骤3: 操作步骤4: 操作步骤5: 操作步骤6:查看 操作步骤7:ignore 操作步骤8:直接提交项目

  10. 【优秀的设计绘图软件】Affinity Designer Beta for Mac 1.7

        [简介] Affinity Designer 1.7 beta 中文版本,具有全新的UI界面和功能,支持最新的 macOS Mojave 10.14 系统,Affinity Designer是 ...