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

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

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

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

  1. --
  2. -- 表的结构 `accesstoken`
  3. --
  4. CREATE TABLE IF NOT EXISTS `accesstoken` (
  5. `A_ID` int(11) NOT NULL,
  6. `A_Token` varchar(600) COLLATE utf8_bin NOT NULL,
  7. `A_Date` int(11) NOT NULL,
  8. `A_Update` int(11) DEFAULT NULL
  9. ) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

  那么下面是php的代码:

  1. //获取 access_token 当然在这之前请连接好自己的数据库
  2. function Curl($appid,$appsecret) {
  3. $url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
  4. $ch = curl_init();
  5. curl_setopt($ch, CURLOPT_TIMEOUT, 5);
  6. curl_setopt($ch, CURLOPT_URL, $url);
  7. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  8. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  9. $dataBlock = curl_exec($ch);//这是json数据
  10. curl_close($ch);
  11. $res = json_decode($dataBlock, true); //接受一个json格式的字符串并且把它转换为 PHP 变量
  12.  
  13. return $res['access_token'];
  14. }
  15. //将令牌插入数据库
  16. function serilizable(){
  17. $appid="你自己的";
  18. $appsecret="你自己的";
  19. $sql="select A_ID,A_Token,A_Date from accesstoken order by A_ID desc";
  20. $rs=mysql_query($sql);
  21. $times=time();//当前时间
  22. $row=mysql_fetch_array($rs);
  23. $rownum=mysql_num_rows($rs);
  24. //数据时间-当前时间 小于800s
  25. if($rownum == 0 ){//若无数据 那么获取令牌,存入数据库
  26. $timestamp=time()+6000;//100分钟后
  27. $token= Curl($appid,$appsecret);
  28. $sqlin="insert into accesstoken(A_Token,A_Date) values('$token','$timestamp')";
  29. mysql_query($sqlin);
  30. return $token;
  31. ///return $rownum;
  32. }else{
  33.  
  34. //超过数据的时间,那么重新获取令牌
  35. if($row['A_Date'] < $times){
  36. $token= Curl($appid,$appsecret);
  37. $timestamp=time()+6000;//100分钟后
  38. $sqlu="UPDATE `accesstoken` SET `A_Token`='$token',`A_Date`='$timestamp' WHERE A_ID = '$row[A_ID]' ";
  39. mysql_query($sqlu);
  40. return $token;
  41. }else//没超过,则从数据库取
  42. return $row[A_Token];
  43.  
  44. }
  45.  
  46. }

  

-如何存储并定时更新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. Zabbix监控服务器硬盘状态

    安装Iptables服务: [root@localhost /]# yum install iptables-services [root@localhost /]# vim /etc/sysconf ...

  2. Linux下VMware在更新完内核无法启动

    该问题尚未解决,我已经换Oracle VM VirtualBox

  3. poj2893 M×N puzzle

    x数码难题有解性判定: 只有必要性证明,没有充分性...... 还记得那个naive至极的八数码难题吗? 它回来了! 主要是借助逆序对这一神奇的手段: 考虑把x数码写成一排时的逆序对的奇偶性: 当你左 ...

  4. python描述器

    描述器定义 python中,一个类实现了__get__,__set__,__delete__,三个方法中的任何一个方法就是描述器,仅实现__get__方法就是非数据描述器,同时实现__get__,__ ...

  5. 洛谷 P1061 Jam的计数法

    传送门 题解: 相关变量解释: int s,t,w; ;//最多输出五组 int maxNum[maxn];//maxNum[i] : i 位置可以达到的最大值 char letter[maxn]; ...

  6. vue 本地存储数据 sessionStorage

    在vuex 下的 action下的userAction.js中添加 export function login(from, self) { axPost('/api/login', from, fun ...

  7. nginx location反向代理不对等时的处理

    server{ server_name git.cheyunhua.top; location /test12/ { proxy_pass https://www.baidu.com/;}} loca ...

  8. 2018acm-icpc青岛站后记

    我要谢谢队友和出题人给了我这一个走出自闭的机会. 继上一个星期徐州因为1分钟的罚时痛失铜牌之后一度茶饭不思,深陷被铜牌支配的恐惧,孤注一掷将宝压到了下一站的青岛上. 幸好拿了银. 给浙大的出题人点赞, ...

  9. POJ3417 LCA+树dp

    http://poj.org/problem?id=3417 题意:先给出一棵无根树,然后下面再给出m条边,把这m条边连上,然后每次你能毁掉两条边,规定一条是树边,一条是新边,问有多少种方案能使树断裂 ...

  10. 发送HTTP_GET请求 表头application/json

    /** * 发送HTTP_GET请求 * 该方法会自动关闭连接,释放资源 * @param reqURL 请求地址(含参数) * @param decodeCharset 解码字符集,解析响应数据时用 ...