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

使用Passport Google认证时遇TokenError: Bad Request问题求助

排查Passport Google认证出现TokenError: Bad Request的原因

下面是几个大概率导致这个错误的点,按优先级排查:

1. Google云平台OAuth配置错误

  • 检查ClientID和ClientSecret的完整性:你提供的clientID末尾有多余的-,clientSecret看起来也像是被截断的,必须从Google Cloud Console的OAuth 2.0客户端ID页面复制完整字符串,不能有遗漏或多余字符。
  • 回调URL完全匹配:确保http://localhost:8080/auth/google/callback已经添加到Google Cloud控制台的「已授权重定向URI」列表里,注意必须完全一致——包括协议(http/https)、端口、路径,大小写也不能错。
  • 客户端类型正确:创建OAuth客户端ID时,要选择「Web应用」类型,不能选桌面应用或其他类型,否则localhost的回调会被拒绝。

2. 代码中未正确调用done()方法

你的GoogleStrategy回调函数是空的,完全没调用done()方法,这会导致Passport无法完成认证流程,直接引发请求异常。必须在回调里处理用户逻辑后调用done():

async (accessToken, refreshToken, profile, done) => {
  try {
    // 示例:查找或创建用户
    let user = await User.findOne({ googleId: profile.id });
    if (!user) {
      user = await User.create({ 
        googleId: profile.id, 
        email: profile.emails[0].value,
        name: profile.displayName 
      });
    }
    // 调用done传递用户对象完成认证
    done(null, user);
  } catch (err) {
    // 传递错误信息
    done(err);
  }
}

3. 本地服务端口与回调URL不匹配

确认你的后端服务确实运行在8080端口,如果后端是其他端口(比如3000),回调URL里的端口也要对应修改,同时同步更新Google Cloud的已授权重定向URI。

4. 相关API未启用

在Google Cloud Console的API库中,确保「People API」(或旧的Google+ API)已经启用,因为Passport获取用户profile信息需要调用这些API,未启用的话会导致授权失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 21:00:17