php THINKPHP5获取微信公众号access_token并存储

15 篇文章 0 订阅
10 篇文章 0 订阅

需求背景:在TP5项目中,获取微信的access_token并存储到Redis,并可以通过Redis查询access_token

第一步:创建一个获取access_token的方法,该方法需要向微信服务器发送请求,获取access_token,并将access_token存储到Redis中:

public function getAccessToken()
{
    $appid = 'your_appid'; // 替换成自己的appid
    $secret = 'your_secret'; // 替换成自己的secret
    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";
    $result = file_get_contents($url);
    $json = json_decode($result, true);
    $access_token = $json['access_token'];
    // 存储access_token到Redis中
    \think\facade\Cache::store('redis')->setex('access_token', 7100, $access_token);
    return $access_token;
}

在上述代码中,使用setex命令将access_token存储到Redis中,并设置了过期时间为7100秒(微信access_token的有效期为7200秒)。

第二步:在Controller中调用该方法,获取access_token并查询:

public function index()
{
    $redis = \think\facade\Cache::store('redis');
    $access_token = $redis->get('access_token');
    if (!$access_token) {
        $access_token = $this->getAccessToken();
    }
    // 输出access_token
    echo $access_token;
}

首先从Redis中获取access_token,如果获取失败,则调用getAccessToken方法重新获取access_token,并存储到Redis中。然后输出access_token。

需要注意:当access_token过期时,需要重新获取并存储到Redis中,以保证access_token的有效性。可以通过定时任务来更新access_token,或者在每次使用access_token之前检查access_token是否过期,如果过期则重新获取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

G佳伟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值