开放平台component_verify_ticket不存在的异常问题

环境描述

lumen5.5* + Redis缓存 + EasyWeChat4

问题描述

在填写好微信开放平台第三方公众号平台应用后, 微信向服务器推送了component_verify_ticket, 好像也缓存到了我的laravel缓存系统里, 看下图:

WeChat日志Redis缓存

但是, 在获取授权url时, 因为EasyWeChat框架内部是封装了的, 所以这里直接从缓存里取, 可是一直报获取不到这个缓存的值

获取授权url时抛异常代码位置

致谢

在网上找了很多, 都没有答案, 只要说到是缓存的问题, 可是看他们使用的好像EasyWeChat版本不是4

我调用的代码是这样的

use EasyWeChat\Factory;

...

public function getPreAuthorizationUrl()
    {
        $config = config('wechat.open_platform');
        $openPlatform = Factory::openPlatform($config);

        $code = $openPlatform->createPreAuthorizationCode();
        $url = $openPlatform->getPreAuthorizationUrl('https://easywechat.com/callback'); // 传入回调URI即可

        return response()->json(
            CR::formatResponseData([
                'url' => $code
            ])
        );
    }

我只要将下发配置中 use_laravel_cache 值设置为false就ok, 设置为false, 表示使用默认的文件缓存, SDK就可以取到缓存的内容. 可是这不是我想要的, 我想要SDK和laravel共用缓存, 难道我对这个参数 use_laravel_cache 的含义理解错了?

/**
     * 默认配置,将会合并到各模块中
     */
    'defaults' => [
        /**
         * Debug 模式,bool 值:true/false
         *
         * 当值为 false 时,所有的日志都不会记录
         */
        'debug' => true,

        /**
         * 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
         */
        'response_type' => 'array',

        /**
         * 使用 Laravel 的缓存系统
         */
        'use_laravel_cache' => true,

        /**
         * 日志配置
         *
         * level: 日志级别,可选为:
         *                 debug/info/notice/warning/error/critical/alert/emergency
         * file:日志文件位置(绝对路径!!!),要求可写权限
         */
        'log' => [
            'level' => env('WECHAT_LOG_LEVEL', 'debug'),
            'file' => env('WECHAT_LOG_FILE', storage_path('logs/wechat.log')),
        ],
    ],

这个问题页再困扰我,请问你解决了吗?

我是用thinkphp集成的easyWeChat v4.x cache是自己手动实例化的redis,代码可以正常使用

我也是thinkphp,但是我composer安装的,也出现了component_verify_ticket不存在的错误

@LL_strive@163.com 问题解决了吗? 我也是共用缓存遇到了这个问题。

@wolffy 我上面不是给出了我的解决方法了吗,我采用不共用缓存的方法,即让EasyWeChat使用自己的文件缓存系统,正常业务使用redis缓存啊。