php编写缓存微信access_token到本地脚本示例

 更新时间:2023年08月06日 11:05:07   作者:TANKING  
这篇文章主要为大家介绍了php编写缓存微信access_token到本地脚本示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

access_token存储更新

access_token 的存储至少要保留 512 个字符空间;

access_token 的有效期目前为 2 个小时,需定时刷新,重复获取将导致上次获取的 access_token 失效,并且每天获取的频次有限,所以需要进行本地缓存或者缓存到数据库进行使用,而不是每次调用接口都获取access_token

获取access_token并缓存到本地access_token.php文件封装函数

<?php
// APPID
$APPID = 'xxx';
// APPSECRET
$APPSECRET = 'xxx';
// 缓存文件路径
$TOKEN_FILE = 'access_token.php';
// 刷新 Access_Token 的函数
function refreshAccessToken($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_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    // 结果
    $response = curl_exec($ch);
    curl_close($ch);
    // 解析结果
    $data = json_decode($response, true);
    if (isset($data['access_token'])) {
        // 返回access_token
        return $data['access_token'];
    } else {
        // 解析失败
        return false;
    }
}
// 从缓存文件中获取 Access_Token 和过期时间戳
function getAccessTokenFromCache($tokenFile) {
    // 判断缓存文件是否存在
    if (file_exists($tokenFile)) {
        // 如果缓存文件存在
        $tokenData = include($tokenFile);
        if ($tokenData && is_array($tokenData) && isset($tokenData['access_token']) && isset($tokenData['expires_at'])) {
            // 返回access_token
            return $tokenData;
        }
    }
}
// 更新缓存文件中的 Access_Token
function updateAccessTokenCache($tokenFile, $access_token, $expires_in) {
    // 提前一分钟刷新
    $expires_at = time() + $expires_in - 60;
    // 生成缓存文件
    $tokenData = "<?php\nreturn array('access_token' => '$access_token', 'expires_at' => $expires_at);\n";
    file_put_contents($tokenFile, $tokenData);
}
// 获取当前时间
$current_time = time();
// 从缓存文件中获取 Access_Token 和过期时间戳
$tokenData = getAccessTokenFromCache($TOKEN_FILE);
// 未过期
if ($tokenData && $tokenData['expires_at'] > $current_time) {
    // 使用缓存的 Access_Token
    $access_token = $tokenData['access_token'];
    // 输出已缓存的access_token
    echo "缓存的Access_Token: $access_token\n";
} else {
    // 刷新 Access_Token
    $access_token = refreshAccessToken($APPID, $APPSECRET);
    // 获取成功
    if ($access_token) {
        // 输出新的access_token
        echo "新的Access_Token: $access_token\n";
        // 更新缓存文件
        updateAccessTokenCache($TOKEN_FILE, $access_token, 7200);
    } else {
        // 刷新失败
        echo "Access_Token刷新失败\n";
    }
}
?>

总结

在以上脚本中,加载这个脚本,会立刻读取本地access_token.php文件,如果存在这个文件,就解析这个文件的内容,读取里面的access_token和过期时间,如果过期了,就直接调用请求接口获取信的access_token并更新文件,如果没有过期,直接使用access_token.php文件里面的access_token作为业务需要。

以上就是php编写缓存微信access_token到本地脚本示例的详细内容,更多关于php access_token微信缓存本地脚本的资料请关注脚本之家其它相关文章!

相关文章

  • Laravel学习教程之本地化模块

    Laravel学习教程之本地化模块

    这篇文章主要给大家介绍了关于Laravel学习教程之本地化模块的相关资料,文中通过示例代码给大家介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-08-08
  • Thinkphp 框架基础之源码获取、环境要求与目录结构分析

    Thinkphp 框架基础之源码获取、环境要求与目录结构分析

    这篇文章主要介绍了Thinkphp 框架基础之源码获取、环境要求与目录结构,简单分析了Thinkphp源码的获取方法、下载地址、安装环境要求以及目录结构,需要的朋友可以参考下
    2020-04-04
  • 浅谈PHP array_search 和 in_array 函数效率问题

    浅谈PHP array_search 和 in_array 函数效率问题

    这篇文章主要介绍了浅谈PHP array_search 和 in_array 函数效率问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Yii2框架中使用PHPExcel导出Excel文件的示例

    Yii2框架中使用PHPExcel导出Excel文件的示例

    本篇文章主要介绍了Yii2框架中使用PHPExcel导出Excel文件的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • php删除一个路径下的所有文件夹和文件的方法

    php删除一个路径下的所有文件夹和文件的方法

    php遍历一个文件夹内的所有文件和文件夹,并删除所有文件夹和子文件夹下的所有文件的代码,通过递归方式实现达到清空一个目录的效果。本文给大家分享实例代码,需要的朋友参考下
    2018-02-02
  • ThinkPHP模板中数组循环实例

    ThinkPHP模板中数组循环实例

    这篇文章主要介绍了ThinkPHP模板中数组循环,以实例形式展示了ThinkPHP采用foreach标签循环输出数组的方法,需要的朋友可以参考下
    2014-10-10
  • laravel5实现微信第三方登录功能

    laravel5实现微信第三方登录功能

    这篇文章主要介绍了laravel5实现微信第三方登录功能,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-12-12
  • php实现paypal 授权登录

    php实现paypal 授权登录

    本文给大家分享的是php实现的paypal授权登录的代码,十分的简单实用,有需要的小伙伴可以参考下。
    2015-05-05
  • php版微信自动登录并获取昵称的方法

    php版微信自动登录并获取昵称的方法

    这篇文章主要介绍了php版微信自动登录并获取昵称的方法,涉及php针对微信公众平台接口调用的相关操作技巧,需要的朋友可以参考下
    2016-09-09
  • Swoole4.4协程抢占式调度器详解

    Swoole4.4协程抢占式调度器详解

    这篇文章主要介绍了Swoole4.4协程抢占式调度器详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05

最新评论