博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
黄聪:如何高效率存储微信中的 access_token
阅读量:6292 次
发布时间:2019-06-22

本文共 1951 字,大约阅读时间需要 6 分钟。

众所周知,在微信开发中,获取access_token 的接口每天的调用次数是有限制的,2000次应该是。 

不过其实这些完全够用了,除非你不小心写了个循环,在1秒中内用完了。 
每个access_token 的生效时间是2小时内,2小时过后就需要重新申请一下。其实每天只需要申请12次就可以了。 
不管你怎么申请,当前申请了access_token,以前的就都不能用了。

所以解决办法就是: 

在数据库中新建一个表token盛放申请来的access_token,字段有三个

access_token #存放access_tokenexpires #存放毫秒数update_time #更新时间戳
  • 1
  • 2
  • 3

逻辑是这样的:(表中只有一条数据)

查询表中数据    如果有数据,用 时间戳+更新时间 跟 现在时间比较,计算是否已过期:        如果已过期,重新申请,并更新数据库中数据,并返回access_token        如果没有过期,直接返回查询出的access_token    如果没数据:        申请数据并,插入数据库,返回access_tooken
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
查询表中数据是否有数据?查询数据是否过期向微信申请新token并插入数据库设置变量 access_token 的值返回 access_token输出数据库表中的access_token向微信申请新token并插入数据库yesnoyesno
/*---------------------获取access_token:    查询数据库中是否有数据,        如果有 取出数据                如果已经过期,查询,更新记录                如果没过期,直接返回数据        如果没有 查询并添加数据,返回数据---------------------*/function get_token(){    $access_url= 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.AppID.'&secret='.AppScret;//AppID  AppScret 已经定义为常量    //数据库参数    $host= "1.1.1.1";    $port = '3306';    $database = "wx";    $user = "mysql";    $passwd = "mysql";    $db = new mysqli($host,$user,$passwd,$database,$port);    $sql = "select * from token"; //查询wx表数据    $exist = $db->query($sql);    global $access_token;    if($exist->num_rows)     //如果存在数据    {        $row = $exist->fetch_array();        //如果数据已过期        if($row['expires']+$row['update_time']
query($sql); $access_token = $token->access_token; //返回更新的token } else { $access_token = $row['access_token']; //返回查询的token } } //如果没有数据 else { $token = json_decode(file_get_contents($access_url)); $sql = "insert into token values('{
$token->access_token}',{
$token->expires_in},".time().")"; $db->query($sql); $access_token = $token->access_token; //返回新建的token } $db->close(); return $access_token; //返回access_token}

 

转载于:https://www.cnblogs.com/huangcong/p/8422040.html

你可能感兴趣的文章
尝试u盘重装系统
查看>>
JS随机数生成算法
查看>>
setTimeout 和 throttle 那些事儿
查看>>
iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序
查看>>
对小米版百度输入法的认知
查看>>
IOS不支持iframe的解决办法
查看>>
回文字符串问题
查看>>
(转)Tomcat7+Redis存储Session
查看>>
vs2012建一个空解决方案添加以前老版本的Web项目调试弹出window安全
查看>>
C# 实现抓取网页内容(一)
查看>>
golang中并发sync和channel
查看>>
margin重叠与line-height属性
查看>>
服务器跟PC机的区别(转)
查看>>
Java核心技术之基础知识
查看>>
读书笔记_写给自学者的入门指南 >博客园||知识库
查看>>
iOS应用之间的跳转与数据传递
查看>>
CCleaner使用说明
查看>>
NOIP专题复习3 图论-强连通分量
查看>>
hdu Dragon Balls
查看>>
java代码-----indexOf()方法--从字符串的某个字符的第一次出现的位子开始
查看>>