公众号登录报错问题处理

1、文件目录:crmeb/services/wechat/OfficialAccount.php

第 88 行注释的放开

2、修改crmeb/services/wechat/OfficialAccount.php文件582行

tokenFromCode方法的返回值为

return $response->getTokenResponse();

3、文件目录:crmeb/services/wechat/CustomHttpClient.php

方法名:request

70 行左右

替换此方法

复制代码
public function request(string $method, string $url, array $options = []): ResponseInterface
    {
        // 合并传入的选项和默认选项
        $options = array_merge(self::OPTIONS_DEFAULTS, $this->httpConfig, $options);

        $ssl = strstr($this->baseUrl, 'https://') !== false;
        $baseUrl = str_replace(['https://', 'http://', '/'], '', $this->baseUrl);

        // 使用 Swoole Client 完成请求
        $client = new Client($baseUrl, $ssl ? 443 : 80, $ssl);

        $client->set([
            'timeout' => !empty($options['timeout']) ? $options['timeout'] : $this->timeout,
            'ssl_cert_file' => $options['cert'] ?? null,
            'ssl_key_file' => $options['ssl_key'] ?? null
        ]);

        $client->setMethod($method);
        $headers = [];
        // 设置请求头
        foreach ($options['headers'] as $key => $value) {
            if (is_string($key)) {
                $values = [];
                if (is_array($value)) {
                    foreach ($value as $item) {
                        [$type, $val] = strstr($item, ':') !== false ? explode(':', $item) : [null, null];
                        if ($type && $val) {
                            $values[] = $val;
                        }
                    }
                    $headers[$key] = implode(',', $values);
                } else {
                    $values[] = $value;
                    $headers[$key] = implode(',', $values);
                }
            } else {
                [$type, $val] = strstr($value, ':') !== false ? explode(':', $value) : [null, null];
                $values[] = $val;
                $headers[$type] = implode(',', $values);
            }
        }

        $client->setHeaders($headers);

        if (!empty($options['query'])) {
            $url = $url . (strstr($url, '?') !== false ? '&' : '?') . http_build_query($options['query']);
        }
        if (!empty($options['json'])) {
            $client->setData($options['json']);
        } else if (!empty($options['body'])) {
            $client->setData($options['body']);
        }

        // 发起请求
        $client->execute('/' . $url);

        // 创建响应对象
        $response = new SwooleResponse($client);

        // 关闭客户端连接
        $client->close();

        return $response;
    }
相关推荐
Setsuna_F_Seiei12 小时前
前端转型 Agent 开发 04 之 MCP 与 Skill(赋予 Agent 更广工作能力)
前端·agent
刘发财14 小时前
前端2秒生成500页矢量PDF,rust真的强到没朋友
前端·javascript·rust
lsswear14 小时前
Python 并发 线程
开发语言·python
郑州光合科技余经理14 小时前
国际版外卖系统:税率字段怎么和订单主流程解耦
android·java·开发语言·前端·后端·php·ai编程
软件课代表CiCi14 小时前
运行库是什么?电脑缺运行库怎么办?c++运行库缺失修复全攻略
开发语言·c++·windows·电脑·dll修复·dll丢失·运行库
梦想平凡15 小时前
百游棋牌源代码开发搭建教程(十):隔离部署、备份恢复与双端验收
java·前端·javascript·数据库·源代码管理
Ivanqhz15 小时前
MLIR OpBuilder
开发语言·python·mlir
yume_sibai16 小时前
06-Rust Web 开发实战(Axum 框架 + 数据库 + JWT 认证 + 中间件 + 部署)
前端·数据库·rust
红宝村村长16 小时前
windows笔记本双系统ubuntu设置
开发语言
云边云科技_云网融合17 小时前
工业互联网组网方案全景解析:从低延迟网络到安全隔离的四大核心支柱
网络·安全·php