直接用 composer require league/oauth2-client:^2.7 安装,确保 php ≥ 7.4 且启用 ext-curl,入口脚本首行必须 require vendor/autoload.php,再选用 google 等具体 provider 子类并正确传参。

直接用 composer require 就行,别手动下载或改 autoload
League OAuth2 Client 是标准 PSR-4 包,Composer 官方包仓库(packagist.org)已收录,composer require league/oauth2-client 一条命令就能装好,自动处理依赖、autoloading 和 vendor 目录结构。手动 clone、require_once 或改 autoload.php 不仅多余,还会导致类找不到或版本冲突。
- 确保当前目录有
composer.json(没有就先composer init或composer install一次) - 运行:
composer require league/oauth2-client:^2.7(推荐显式指定 ^2.7,避免意外升级到 3.x——它不兼容 PHP 7.x 且接口有 breaking change) - 安装后,
vendor/league/oauth2-client目录会自动生成,vendor/autoload.php已包含对应 PSR-4 映射
PHP 版本和 ext-curl 是硬性前提,否则安装会静默失败
Composer 可能成功写入 composer.json 并生成 lock 文件,但实际 require 时抛出 Class 'League\OAuth2\Client\Provider\GenericProvider' not found——这往往不是 Composer 没装好,而是 PHP 缺少必要扩展或版本太低。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 确认 PHP ≥ 7.4(2.7.x 最低要求),用
php -v检查 - 必须启用
ext-curl:运行php -m | grep curl,没输出就得装(Ubuntu:sudo apt install php-curl;macOS Homebrew:brew install php@8.1自带) - 如果用的是 Docker,确保
Dockerfile里有RUN docker-php-ext-install curl或对应启用指令
安装后不能直接 new Provider,得先选对子类并传参
league/oauth2-client 本身不提供具体平台的认证逻辑,它只定义抽象基类;你必须用它的子类,比如 League\OAuth2\Client\Provider\Google 或 League\OAuth2\Client\Provider\Github。直接 new GenericProvider 也行,但所有参数(authUrl、tokenUrl、redirectUri 等)都得手动填全,极易漏掉 urlAuthorize 或拼错 scope 分隔符。
- 推荐从官方支持的 provider 开始:
composer require league/oauth2-google(或其他如league/oauth2-github) - 实例化时注意构造函数参数顺序:client ID、client secret、redirect URI 必须传,
scopes要用数组(不是字符串),例如['email', 'profile'] - 别在构造时传错 URL:Google 的
tokenUrl是https://oauth2.googleapis.com/token,不是/o/oauth2/token(旧版已弃用)
vendor/autoload.php 必须在脚本最顶部 require,且不能被条件包裹
很多新手把 require __DIR__.'/vendor/autoload.php'; 写在 if 判断里、函数中,或者放在 require 其他文件之后,结果类加载器根本没注册,报错还是 Class not found。
- 入口脚本(如
index.php或callback.php)第一行就该是:require __DIR__.'/vendor/autoload.php'; - 路径必须准确:如果脚本不在项目根目录,要用相对路径算清楚,比如
require __DIR__.'/../vendor/autoload.php'; - 不要用
include或require_once多次——autoload.php内部已做防重载,重复 require 反而可能触发 warning










