腾讯云开发时access_token的获取与保存

该博客详细介绍了如何使用PHP实现微信公众号API的访问令牌(access_token)的获取、存储以及过期检查。通过`config.php`配置文件存储appid和appsecret,`utils.php`包含辅助函数,如请求GET、获取access_token以及更新配置文件。当access_token过期时,程序会自动获取新的令牌并更新配置。调用`read_token()`即可获取有效的access_token。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

config.php
/**本文件是配置文件,token存在此文件中 */

<?php

$appid = 'your appid';
$appsecret = 'your secret';
$access_token="";
$expire_time=0;

utils.php
/**本文件是工具函数文件,三个函数用于取得token\保存配置 */

<?php
include_once('config.php');
//get请求函数
function request_get($url)
{
    $ch = curl_init();
    $opts = array(
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => false,
        CURLOPT_TIMEOUT        => 30,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_URL            => $url,
    );
    curl_setopt_array($ch, $opts);
    //执行cURL操作
    $output = curl_exec($ch);
    if (curl_errno($ch)) {
        //cURL发生错误处理操作
        var_dump(curl_error($ch));
        die;
    }
    curl_close($ch);
    return $output;
}
//获取access_token 返回字符串
function getAccessToken($appid, $appsecret)
{
    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";
    $output = request_get($url);
    $jsoninfo = json_decode($output, true);
    $access_token = $jsoninfo["access_token"];
    return $access_token;
}
//echo getAccessToken($appid,$appsecret);

//修改配置文件,使用正则匹配修改
function update_config($file, $cfg, $value, $type = 'string')
{
    if (!file_exists($file)) return false;
    $str = file_get_contents($file);
    if ('' != $str && $str != null) {
        $str1 = '';
        if ($type == 'int') {
            $str1 = preg_replace("/" . $cfg . "\s*=\s*(.*)/", $cfg . "=$value;", $str);
        } else {
            $str1 = preg_replace("/" . $cfg . "\s*=\s*[\"\'](.*)/", $cfg . "=\"" . $value . "\";", $str);
        }
        file_put_contents($file, $str1);
    } else {
        return false;
    }
}

function read_token()
{
    global $appid,$appsecret,$access_token,$expire_time; //获取函数外全局变量
    $now = time(); //获取当前时间
    if ($now > $expire_time) { //判断当前时间是否大于过期时间,若大于则要重新获取
        $expire_time = $now + 7000; //设置过期时间,之后比较不用再计算
        $access_token = getAccessToken($appid, $appsecret); //获取access_token        
        update_config('config.php', 'access_token', $access_token); //写文件,保存access_token
        update_config('config.php', 'expire_time', $expire_time, 'int'); //写文件,保存过期时间
        return  $access_token;
    } else {
        return $access_token;
    }
}

调用方式:

<?php 
include_once('utils.php'); 
echo read_token();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值