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

Laravel集成Socialite实现Google登录回调跳转404错误求助

问题原因分析

导致404的核心原因是Google回调地址和项目实际路由路径不匹配:
你在config/services.php中配置的Google回调地址硬编码了/laravel-socialite/public前缀,但Laravel的路由定义是直接以/login/google/callback作为路径的,当Google跳转回调时访问的带前缀地址没有对应的路由,就会返回404。
除此之外还有三种常见的衍生原因:

  • 你没有清理路由缓存,新增的Google登录路由未生效
  • 代码中存在语法错误:LoginController的handleGoogleCallback方法里调用_registerOrLoginUser时,$this和->之间加了多余空格,PHP语法不支持这种写法,也会触发报错
  • Web服务器根目录没有指向Laravel的public文件夹,导致访问路径必须携带public后缀才能找到入口文件
修复方案

按顺序执行以下操作即可:

  1. 修改config/services.php中的Google配置,将回调地址改为动态读取env配置,避免硬编码路径:
'google' => [
    'client_id' => env('GOOGLE_CLIENT_ID'),
    'client_secret' => env('GOOGLE_CLIENT_SECRET'),
    'redirect' => env('GOOGLE_REDIRECT_URI'),
],
  1. 在.env文件中新增回调地址配置,如果你使用php artisan serve启动项目,配置如下:
GOOGLE_REDIRECT_URI=http://localhost:8000/login/google/callback
  1. 登录Google开发者控制台,找到你创建的OAuth应用,将授权重定向URI修改为和上面完全一致的http://localhost:8000/login/google/callback,两边地址必须100%匹配否则会报错。
  2. 修正LoginController中的语法错误,去掉调用方法时的多余空格:
public function handleGoogleCallback () {
    $user = Socialite::driver('google')->user();
    $this->_registerOrLoginUser($user);
    return redirect()->route('home');
}
  1. 清理路由缓存确保新路由生效,执行命令:
    php artisan route:clear
  2. 如果你使用自定义的Nginx/Apache服务,将站点根目录指向项目的public文件夹,避免访问路径需要携带public后缀;测试阶段可以直接用php artisan serve启动项目,访问http://localhost:8000测试登录功能即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 13:24:01