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
相关产品推荐
相关产品推荐

