PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通

QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > CMS教程 > Fastadmin

FastAdmin分布式存储如何保证微信AccessToken一致性

管理员 2024-12-14
Fastadmin
6

在FastAdmin中进行微信开发时,FastAdmin中使用的EasyWechat在获取和缓存微信access_token默认采用的是文件进行缓存,如果我们服务端存在分布式部署时,此时我们在调用微信的相关接口时就会经常出现以下错误

{"errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest rid: "}

此时我们需要将EasyWechat的缓存修改为Redis,有以下两种方式:

全局配置

use EasyWeChatFactory;$config = [    'app_id' => 'your app_id',    'secret' => 'your secret',        'events' => [        'listen' => [            ApplicationInitialized::class => [                function ($event) {                    $redis = new Redis();                    $redis->connect('127.0.0.1', 6379);                    $redis->auth('Redis密码'); //密码为空时可忽略                    $cache = new RedisAdapter($redis, $namespace = '', $defaultLifetime = 0);                    $event->app->rebind('cache', $cache);                }            ],        ],    ],    //...];// 建议`$config`配置放在一个通用的配置文件中$app = Factory::officialAccount($config);

按需配置

use EasyWeChatFactory;$config = [    'app_id' => 'your app_id',    'secret' => 'your secret',    //...];$app = Factory::officialAccount($config);$redis = new Redis();$redis->connect('127.0.0.1', 6379);$redis->auth('Redis密码'); //密码为空时可忽略$cache = new RedisAdapter($redis, $namespace = '', $defaultLifetime = 0);$event->app->rebind('cache', $cache);//...

缓存优化

通过以上步骤已经可以实现使用Redis存储access_token,如果我们框架的缓存同时也使用了Redis,此时如果我们我们希望直接使用框架中的Redis连接,我们可以将上方的

$redis = new Redis();$redis->connect('127.0.0.1', 6379);$redis->auth('Redis密码'); //密码为空时可忽略

修改为

$redis = thinkCache::store('redis')->handler();

即可,这样可以减少一次Redis的连接。


希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。

相关推荐

扫码关注

qrcode

QQ交谈

回顶部