微信公众号开发--获取access_token后存入数据库(第③篇)
微信公众号开发
·
·这一篇数微信公众号开发的第三篇,如果你是小白请点击下方第一篇的链接:
·上一篇提到,成功获取access_token后,需要对这个数据进行处理。可以存入数据库,也可以存入json文件,官方文档要求7200s就会刷新token,在刷新过程中,中控服务器可对外继续输出的老access_token,此时公众平台后台会保证在5分钟内,新老access_token都可用,这保证了第三方业务的平滑过渡;
下面我们来写一个存入数据库的逻辑思路。
逻辑:
- 获取token值(微信公众号开发专栏的第二篇有讲)
- 拿到token值后将需要将:当前时间戳、token、token有效时长,存入数据库
- 后续访问,先查询数据库是否存在有效token,如果有就直接使用,否则直接继续获取新的token并存入数据库。
如果已经有了服务器和数据库,可以省略下面两步
(一)·微信公众号开发必须要有自己的服务器,如果没有安装服务器请点击下方链接配置:
阿里云服务器LNMP部署(宝塔篇)_阿里云服务器如何安装堡塔控制面板-CSDN博客
- ·有了服务器后还需要创建数据库,可以参考一下链接:
phpMyAdmin创建(宝塔篇)_宝塔phpmyadmin-CSDN博客
首先需要获取token的代码:
$appId = 'wx66666666666'; //改成自己的
$appSecret = '656666666666666666666'; //改成自己的
$accessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appId&secret=$appSecret";
$accessTokenResponse = file_get_contents($accessTokenUrl);
$accessTokenData = json_decode($accessTokenResponse, true);
$accessToken = $accessTokenData['access_token'];
1、连接数据库,并将token、当前时间戳、有效时间戳,添加到数据库
代码:
$conn = new mysqli('localhost', 'root', '123456', 'weixin');
if ($conn->connect_error) {
die("连接数据库失败: " . $conn->connect_error);
}
$sql = "SELECT * FROM `tokenmain` WHERE `stopTokenTime` > ? LIMIT 1";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", time());
$stmt->execute();
$tokenInfo = $stmt->get_result();
if ($tokenInfo->num_rows > 0) {
$row = $tokenInfo->fetch_assoc();
if ($row['stopTokenTime'] > time()) {
echo "token有效,访问成功";
} else {
require_once "./idInfo.cls.php"; //这里引入的是上面获取token的php
$sql = "INSERT INTO `tokenmain`(`token`,`startTokenTime`,`stopTokenTime`) VALUES (?, ?, ?)";
$stmt = $conn->prepare($sql);
$startTime = time();
$stopTime = $startTime + 6900; // 2小时的有效期
$stmt->bind_param("sii", $accessToken, $startTime, $stopTime);
if ($stmt->execute()) {
echo "Access Token 已缓存到数据库。";
} else {
echo "缓存 Access Token 到数据库失败: " . $stmt->error;
}
}
} else {
require_once "./idInfo.cls.php";
$sql = "INSERT INTO `tokenmain`(`token`,`startTokenTime`,`stopTokenTime`) VALUES (?, ?, ?)";
$stmt = $conn->prepare($sql);
$startTime = time();
$stopTime = $startTime + 6900; // 虽然2小时的有效期,但是需要提前几分钟刷新
$stmt->bind_param("sii", $accessToken, $startTime, $stopTime);
if ($stmt->execute()) {
echo "Access Token 已缓存到数据库。";
} else {
echo "缓存 Access Token 到数据库失败: " . $stmt->error;
}
}
$stmt->close();
$conn->close();
- 运行成功
- 存入数据库成功
- 如果没有创建数据库的,按我的字段样式创建
这就是第三篇的所有内容了,获取token,再存入数据库教学,
下一篇就是获取openid信息第④篇
更多推荐
已为社区贡献2条内容
所有评论(0)