+
95
-

php如何解决access_token过期失效问题?

php

微信那边的acces_token有效期为7200秒,一天调用2000次,如果程序访问量上来后,会无法获取access_token,请问有什么办法?

网友回复

+
15
-

可以写个定时任务,定时更新token,将新token保存到文件中或redis、数据库中。

<?php
$AppID = "123123";
$AppSecret = "123123";
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$AppID."&secret=".$AppSecret;

$result = http_request($url);

$tokendata = json_decode($result, 1);

if (isset($tokendata['access_token'])) {
    $dir = __DIR__; //真实路径,crontab命令的php执行在cli模式下,不能正确识别相对路径,所以使用__DIR__
    $filename = $dir."/access_token.ini";


    create_file($filename, $tokendata['access_token']);
} else...

点击查看剩余70%

+
15
-
<?php
/**
* 获取 access_tonken值
* @param string $token_file 用来存储的文件
* @return access_token
*/
function getAccessToken($token_file = 'access_token_file') {
    //处理是否过期问题,将access_token存储到文件
    $life_time = 7200;
    if (file_exists($token_file) && time() - filemtime($token_file) < $life_time) {
        // 存在有效的access_token 直接返回文件内容
        return file_get_contents($token_file);
    }
    //接口URL
    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->_appid."&secret=".$this->_appsecret;
    //发送GET请求
    $result = _request('get', $url);
    if (!$result) {
        return false;
    }
    //处理数据
    $result_obj = json_decode($result);
    //写入到文件
    file_put_contents($token_file, $result_obj->access_toke...

点击查看剩余70%

我知道答案,我要回答