微信硬件平台(七)微信开发--如何存储并定时更新access_token
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的更多相关文章
- -如何存储并定时更新access_token
来源:https://blog.csdn.net/sct_t/article/details/53002611 我们知道请求access_Token会返回这样一个json,包括access_token ...
- 两百条微信小程序跳坑指南(不定时更新)
微信小程序联盟出品 跳坑textarea<二百二十三>不显示文本及textarea相关问题集合跳坑<二百一十三> background-image无法获取本地资源图片....跳 ...
- 微信小程序云开发-云存储的应用-识别身份证(正面和反面)
一.准备工作 1.创建云函数identify 2.云函数identify中index.js代码 1 // 云函数入口文件 2 const cloud = require('wx-server-sdk' ...
- 微信小程序云开发-云存储-使用云开发控制台存储文件
一.存储 进入[云开发控制台]>点击[存储].将需要存储的文件通过[上传文件]方式上传上去.或者通过拖拽的方式上传文件. 二.存储文件的类型 可以存储的文件有很多,常见的文件类型包括:word ...
- 微信小程序云开发-云存储的应用-识别通用印刷体
一.准备工作 1.创建云函数identify 2.云函数identify中index.js代码 1 // 云函数入口文件 2 const cloud = require('wx-server-sdk' ...
- 微信小程序云开发-云存储的应用-识别营业执照
一.准备工作 1.创建云函数identify 二.云函数identify中index.js代码 1 // 云函数入口文件 2 const cloud = require('wx-server-sdk' ...
- 微信小程序云开发-云存储的应用-识别行驶证
一.准备工作 1.创建云函数identify 2.云函数identify中index.js代码 1 // 云函数入口文件 2 const cloud = require('wx-server-sdk' ...
- 微信小程序云开发-云存储的应用-识别驾驶证
一.准备工作 1.创建云函数identify 2.云函数identify中index.js代码 1 // 云函数入口文件 2 const cloud = require('wx-server-sdk' ...
- 微信小程序云开发-云存储的应用-识别银行卡
一.准备工作 1.创建云函数identify.自定义action=="2"的时候识别银行卡信息. 2.云函数identify中index.js代码 1 const cloud = ...
随机推荐
- 查询文章的上下篇Sql语句
直接开入正题 文章内容页一般都会有上一篇和下一篇的功能: 那么查询上下篇的sql语句应该怎么写呢:示例数据表:zmd_article自增主键:id当前文章id:10 肯定有人说,这简单啊id+1和id ...
- vue.js插入dom节点的方式
html代码: <div id="app"></div> js代码: var MyComponent = Vue.extend({ template: '& ...
- Spring 切入点配置
有关各种拦截的切入点配置举例 (1)只对返回值为String的方法进行拦截 @Pointcut("execution (java.lang.String com.zzdr.spring.se ...
- meta、link、script的常用写法
meta 设置编码格式 <meta charset='utf-8'> 设置关键字 <meta name="keywords" content="音乐 播 ...
- CSS 定位与Z-index
position: static Z-index 固定是0 position: absolute/relative/fixed Z-index 有效 在层叠显示上,所有static定位元素看作 ...
- Nginx 集群 反向代理多个服务器
准备多个服务器,使用 nginx 先做好代理(我这里只有一台服务器,就拷贝两个 tomcat 了,端口分别设置为 8081 和 8082) 1,复制 tomcat cp -r apache-tomca ...
- 在viewPager中双指缩放图片,双击缩放图片,单指拖拽图片
我们就把这个问题叫做图片查看器吧,它的主要功能有: (项目地址:https://github.com/TZHANHONG/ImageViewer/releases/tag/1.0,里面的MyImage ...
- html之CSS样式学习笔记
本文内容: 字体样式 文本样式 背景样式 尺寸样式 盒子模型 边框样式 边距样式 浮动布局 定位布局 [CSS3]伸缩布局 标签显示方式 列表样式 [CSS3]过渡样式 [CSS3]变换样式之2D变形 ...
- java--反射机制总结
一.什么是Java反射机制? JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的以及动态调用对象的方法的功能 ...
- 2016-04-25-信息系统实践手记6-JS调用Flex的性能问题一例
layout: post title: 2016-04-25-信息系统实践手记6-JS调用Flex的性能问题一例 key: 20160425 tags: GIS JS FLEX 技术选型 性能 API ...