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. 两百条微信小程序跳坑指南(不定时更新)

    微信小程序联盟出品 跳坑textarea<二百二十三>不显示文本及textarea相关问题集合跳坑<二百一十三> background-image无法获取本地资源图片....跳 ...

  3. 微信小程序云开发-云存储的应用-识别身份证(正面和反面)

    一.准备工作 1.创建云函数identify 2.云函数identify中index.js代码 1 // 云函数入口文件 2 const cloud = require('wx-server-sdk' ...

  4. 微信小程序云开发-云存储-使用云开发控制台存储文件

    一.存储 进入[云开发控制台]>点击[存储].将需要存储的文件通过[上传文件]方式上传上去.或者通过拖拽的方式上传文件.  二.存储文件的类型 可以存储的文件有很多,常见的文件类型包括:word ...

  5. 微信小程序云开发-云存储的应用-识别通用印刷体

    一.准备工作 1.创建云函数identify 2.云函数identify中index.js代码 1 // 云函数入口文件 2 const cloud = require('wx-server-sdk' ...

  6. 微信小程序云开发-云存储的应用-识别营业执照

    一.准备工作 1.创建云函数identify 二.云函数identify中index.js代码 1 // 云函数入口文件 2 const cloud = require('wx-server-sdk' ...

  7. 微信小程序云开发-云存储的应用-识别行驶证

    一.准备工作 1.创建云函数identify 2.云函数identify中index.js代码 1 // 云函数入口文件 2 const cloud = require('wx-server-sdk' ...

  8. 微信小程序云开发-云存储的应用-识别驾驶证

    一.准备工作 1.创建云函数identify 2.云函数identify中index.js代码 1 // 云函数入口文件 2 const cloud = require('wx-server-sdk' ...

  9. 微信小程序云开发-云存储的应用-识别银行卡

    一.准备工作 1.创建云函数identify.自定义action=="2"的时候识别银行卡信息. 2.云函数identify中index.js代码 1 const cloud = ...

随机推荐

  1. es6 语法 (数值扩展)

    { //二进制数值都是0b开头,八进制0o console.log(0b111110111) console.log(0o767); } { console.log('15',Number.isFin ...

  2. SAP MM GR-based IV, 无GR不能IV?

    SAP MM GR-based IV, 无GR不能IV? 如下的采购订单, 没有做过收货, ITEM的details里却勾选了’GR-Bsd IV’ 选项. 此时试图直接针对该PO#450260713 ...

  3. Javascript数组系列三之迭代方法2

    今天我们来继续 Javascript 数组系列的文章,上文 <Javascript数组系列二之迭代方法1> 我们说到一些数组的迭代方法,我们在开发项目实战的过程中熟练的使用可以大大提高我们 ...

  4. JHipster生成微服务架构的应用栈(四)- 网关微服务示例

    本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈. 环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里) 应用栈名称:appstack 认证微服务: uaa 业 ...

  5. 同一个菜品商家中心和erp价格显示不一致解决方案FAQ

    1.适用场景: 2.问题原因:子账号在商家中心改了价格 3.解决办法: (1).子账号登录商家后台修改 再同步(2).ERP上商品管理 修改价格

  6. mysql---SQLZOO:从WORLD选择教程/ zh

    名称 大陆 区 人口 gdp 阿富汗 亚洲 652230 25500100 20343000000 阿尔巴尼亚 欧洲 28748 2831741 12960000000 阿尔及利亚 非洲 238174 ...

  7. 探索SQL Server元数据(二)

    背景 上一篇中,我介绍了SQL Server 允许访问数据库的元数据,为什么有元数据,如何使用元数据.这一篇中我会介绍如何进一步找到各种有价值的信息.以触发器为例,因为它们往往一起很多问题. 那么如何 ...

  8. 将DataTable中的数据一次性提交到数据库中

    实现功能的核心代码 SqlConnection destinationConnection = new SqlConnection(connectionString);destinationConne ...

  9. iis 6,7 ftp 进行用户隔离进行权限控制,不同用户查看不同文件夹

    iis 6 配置点击链接 http://www.jb51.net/article/20676.htm iis 7配置 1.建立文件夹 C:\ftp, 并增加 目录 localuser(这个是必须的名字 ...

  10. python 进程池的简单使用方法

    回到python,用一下python的进程池. 记得之前面试的时候,面试官问:你知道进程池的默认参数吗? 我没有回答上来,后来才知道,是有默认参数的.下面就看看它的默认参数 1. 不加参数 from ...