Laravel 10 + Socialite 多谷歌账号配置失败求助
出现Driver [user_sign_in_google] not supported错误,核心原因是Socialite默认仅识别google驱动,自定义的谷歌服务驱动需要手动注册,同时要排查配置和拼写问题,具体解决步骤如下:
1. 确认services.php配置正确性
打开config/services.php,确保自定义谷歌服务配置格式正确,示例:
return [ // 其他服务配置... 'sign_in_google' => [ 'client_id' => env('SIGN_IN_GOOGLE_CLIENT_ID'), 'client_secret' => env('SIGN_IN_GOOGLE_CLIENT_SECRET'), 'redirect' => env('SIGN_IN_GOOGLE_REDIRECT_URI'), ], 'sign_up_google' => [ 'client_id' => env('SIGN_UP_GOOGLE_CLIENT_ID'), 'client_secret' => env('SIGN_UP_GOOGLE_CLIENT_SECRET'), 'redirect' => env('SIGN_UP_GOOGLE_REDIRECT_URI'), ], ];
2. 注册自定义驱动到Socialite
在app/Providers/AppServiceProvider.php的boot方法中,注册两个自定义谷歌驱动,让Socialite识别它们:
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use Laravel\Socialite\Facades\Socialite; use Laravel\Socialite\Two\GoogleProvider; class AppServiceProvider extends ServiceProvider { public function boot() { // 注册登录用的谷歌驱动 Socialite::extend('sign_in_google', function ($app) { $config = $app['config']['services.sign_in_google']; return Socialite::buildProvider(GoogleProvider::class, $config); }); // 注册注册用的谷歌驱动 Socialite::extend('sign_up_google', function ($app) { $config = $app['config']['services.sign_up_google']; return Socialite::buildProvider(GoogleProvider::class, $config); }); } }
3. 清除配置缓存
修改配置后需清除缓存,避免旧配置干扰:
php artisan config:clear
4. 检查控制器调用拼写
错误提示中出现的是user_sign_in_google,但你配置的是sign_in_google,务必确认控制器中的调用代码拼写正确:
// 正确调用 return Socialite::driver('sign_in_google')->redirect();
额外注意事项
- 确保
.env文件中对应的SIGN_IN_GOOGLE_*、SIGN_UP_GOOGLE_*变量已正确填写,且谷歌开发者控制台中的重定向URI与配置的redirect值完全一致。
内容的提问来源于stack exchange,提问作者Ramy Mohamed
相关产品推荐
相关产品推荐

