You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Laravel中SocialiteProviders刷新令牌声明不兼容错误

解决Laravel 10升级后Socialite Apple Provider兼容错误

问题场景

升级到Laravel 10后执行composer up,依赖配置如下:

"require": {
    "php": "^8.2",
    ...
    "laravel/socialite": "^5",
    ...
    "socialiteproviders/apple": "^5"
},

触发以下致命错误:

PHP Fatal error: Declaration of SocialiteProviders\Apple\Provider::refreshToken(string $refreshToken): Psr\Http\Message\ResponseInterface must be compatible with Laravel\Socialite\Two\AbstractProvider::refreshToken($refreshToken) in /Users/user/Sites/site/vendor/socialiteproviders/apple/Provider.php on line 289

已安装两者最新版本,无自定义代码。

解决方案

这个错误源于socialiteproviders/apple v5版本的方法签名与Laravel Socialite v5的抽象方法不兼容(PHP 8.2对方法签名兼容性检查更严格),可按以下步骤修复:

  • 升级socialiteproviders/apple到适配版本
    Laravel 10对应的兼容版本为^6.0,该版本已调整方法签名匹配Socialite要求。修改composer.json中的依赖:

    "socialiteproviders/apple": "^6.0"
    

    执行更新命令:

    composer update socialiteproviders/apple
    
  • 确保Laravel Socialite版本适配
    Laravel 10要求laravel/socialite至少为^5.10,若当前版本较低,可一并更新:

    composer update laravel/socialite
    
  • 清除框架缓存
    更新依赖后清除缓存,确保修改生效:

    php artisan cache:clear
    php artisan config:clear
    

原理说明

Laravel Socialite v5后续版本调整了refreshToken方法的签名,而socialiteproviders/apple v5版本仍保留旧的强类型声明,在PHP 8.2的严格模式下触发兼容性错误。升级到socialiteproviders/apple v6版本后,方法签名将与Socialite的抽象方法保持一致,解决该问题。

内容的提问来源于stack exchange,提问作者daprezjer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 04:43:26