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

请求Firebase REST API拉取用户项目列表时401未授权如何解决

问题核心原因

你遇到的401错误是因为混淆了两种完全不同的身份凭证:

  • auth.currentUser.getIdToken() 拿到的是 Firebase Auth ID 令牌,这是专门用于验证Firebase服务用户身份的JWT,无法用于调用Google Cloud、Firebase的公共开放API
  • 调用https://firebase.googleapis.com端点需要的是 Google OAuth 2.0访问令牌,是用户完成Google授权登录后返回的OAuth专属凭证
修复方案
  1. 登录成功后从登录结果中提取Google OAuth访问令牌,不要调用getIdToken方法:
// 调整登录逻辑,接收登录返回结果
const result = await signInWithPopup(auth, provider);
// 方式1:直接从用户对象取访问令牌
const oauthAccessToken = result.user.accessToken;
// 方式2:从认证凭证中提取(兼容新版Firebase SDK)
// const credential = GoogleAuthProvider.credentialFromResult(result);
// const oauthAccessToken = credential.accessToken;
  1. 用获取到的OAuth访问令牌发起接口请求:
const data = await window.fetch("https://firebase.googleapis.com/v1beta1/projects", {
  headers: {
    authorization: `Bearer ${oauthAccessToken}`,
  },
})
.then(res => res.json());
额外注意事项
  • 你已经配置的权限范围可以满足获取项目列表的需求,不需要额外新增其他scope
  • Google OAuth访问令牌默认有效期为1小时,过期后需要引导用户重新授权,或通过刷新令牌更新凭证
  • 生产环境建议把这部分API请求移到后端处理,避免前端直接暴露访问令牌带来的安全风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:15:02