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

Node.js Express部署EC2时Google OAuth 400 invalid_request错误

Google OAuth 400 invalid_request 重定向URI不匹配报错修复方案

核心触发原因

  • 访问入口不统一:实际访问服务使用https://<EC2公网IP>:8000,但Google控制台配置的已授权源、重定向URI均为https://<EC2公网IP>.xip.io:8000,域名不一致直接触发Google安全校验拦截
  • 回调地址配置不严谨:Passport Google策略中callbackURL使用相对路径/auth/google/callback,公网部署时Passport会根据当前请求的Host自动拼接完整回调地址,若请求来自裸IP访问,拼接出的回调地址为https://<EC2公网IP>:8000/auth/google/callback,与控制台配置的xip.io后缀地址完全不匹配
  • 配置规范不符:公网场景下Google OAuth对带非标准端口的HTTPS重定向URI校验规则更严格,混用地址时极易触发拦截

修复步骤

1. 统一全链路访问域名

全程使用https://<EC2公网IP>.xip.io:8000作为服务访问入口,禁止直接输入裸IP+端口访问服务,所有触发Google登录的页面、跳转链接都基于该xip.io域名生成。

2. 修正Passport策略配置

将相对路径的回调地址改为与Google控制台完全一致的绝对地址,修改AUTH_OPTIONS配置段:

const AUTH_OPTIONS = {
  // 地址需与Google控制台填写的重定向URI完全一致,不得有字符差异
  callbackURL: 'https://<替换为你的EC2公网IP>.xip.io:8000/auth/google/callback',
  clientID: config.CLIENT_ID,
  clientSecret: config.CLIENT_SECRET,
};

校验规则说明:重定向URI的协议、域名、端口、路径必须完全匹配,末尾多余斜杠、http/https写错、端口遗漏都会直接触发400错误。

3. 核对Google云控制台配置

进入对应OAuth 2.0客户端ID的配置页,确认以下配置值准确:

  • 已授权的JavaScript来源:仅保留https://<EC2公网IP>.xip.io:8000,不要追加任何路径后缀
  • 已授权的重定向URI:仅保留https://<EC2公网IP>.xip.io:8000/auth/google/callback,不要在末尾加斜杠
  • 配置修改后等待3-5分钟再测试,Google侧配置生效存在缓存延迟,修改后立即测试大概率仍会报错

4. 排除本地缓存干扰

测试前清空浏览器对应域名的Cookie、本地存储,或直接使用无痕模式访问登录入口,避免本地缓存的旧请求参数干扰校验。

兜底排查方法

若完成上述步骤仍报错,打开浏览器开发者工具,抓取跳转到Google授权页的请求,查看请求参数中redirect_uri的实际值,将该值一字不差复制到Google控制台的已授权重定向URI列表中即可,该参数是Google做匹配校验的唯一依据。
Google OAuth 400报错页面截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:36:21