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

Symfony 6虚拟本地主机Google OAuth2登录invalid_request错误求助

解决Symfony 6本地虚拟主机Google OAuth 2.0登录invalid_request错误

核心问题

你的自定义本地域名http://random-quizz/不属于公共顶级域名(如.com/.org),Google OAuth 2.0不允许将这类域名添加到授权源或重定向URI列表,导致重定向地址不匹配触发400错误。

解决方案步骤

1. 修改本地域名,使用Google认可的本地TLD

Google OAuth接受.localhost作为合法的本地顶级域名,需调整Wamp虚拟主机配置:

  • 打开Wamp虚拟主机配置文件(通常路径:wamp64/bin/apache/apacheX.X.X/conf/extra/httpd-vhosts.conf)
  • 将原虚拟主机的ServerName从random-quizz改为random-quizz.localhost
  • 确认DocumentRoot路径与项目目录一致

2. 更新本地hosts文件

  • Windows:打开C:\Windows\System32\drivers\etc\hosts(需管理员权限);macOS/Linux:打开/etc/hosts
  • 添加一行映射:127.0.0.1 random-quizz.localhost
  • 保存文件

3. 调整Google Console的OAuth配置

在Google Cloud Console对应OAuth应用中更新以下项:

  • Authorized JavaScript origins:添加http://random-quizz.localhost
  • Authorized redirect URIs:添加http://random-quizz.localhost/connect/google/check
  • 保存配置(修改后需等待1-2分钟生效)

4. 更新Symfony项目的Google OAuth配置

  • 打开项目.env文件,更新环境变量:
    GOOGLE_CLIENT_ID=你的新Client ID
    GOOGLE_CLIENT_SECRET=你的新Client Secret
    GOOGLE_REDIRECT_URI=http://random-quizz.localhost/connect/google/check
    
  • 检查config/packages/security.yaml中的OAuth认证配置,确保关联的认证类(如GoogleAuthenticator)返回的重定向地址与上述一致,示例认证类中的方法:
    public function getRedirectUri(): string
    {
        return $this->urlGenerator->generate('connect_google_check', [], UrlGeneratorInterface::ABSOLUTE_URL);
    }
    
    确保路由connect_google_check对应的地址是http://random-quizz.localhost/connect/google/check

5. 测试登录

重启Wamp服务,访问http://random-quizz.localhost尝试Google登录,此时重定向URI与Google Console配置完全匹配,应能正常完成授权流程。

其他注意事项

  • 之前用localhost配置仍报错,是因为项目实际请求的重定向地址为random-quizz,与Google Console中的localhost地址不匹配,必须保证两者完全一致
  • 若修改后仍报错,可清除浏览器缓存或换无痕窗口测试,避免旧缓存影响

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:05:38