·这一篇数微信公众号开发的第三篇,如果你是小白请点击下方第一篇的链接:

微信公众号开发-接口配置信息(第①篇)-CSDN博客


·上一篇提到,成功获取access_token后,需要对这个数据进行处理。可以存入数据库,也可以存入json文件,官方文档要求7200s就会刷新token,在刷新过程中,中控服务器可对外继续输出的老access_token,此时公众平台后台会保证在5分钟内,新老access_token都可用,这保证了第三方业务的平滑过渡;

下面我们来写一个存入数据库的逻辑思路。


逻辑:

  1. 获取token值(微信公众号开发专栏的第二篇有讲
  2. 拿到token值后将需要将:当前时间戳、token、token有效时长,存入数据库
  3. 后续访问,先查询数据库是否存在有效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信息第④篇

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐