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

用户登录获取的Firestore ID token调用REST API认证失败如何解决?

问题解决方案

你遇到的401认证错误核心由请求URL格式错误导致,配套排查步骤如下:

1. 修正Firestore REST API请求路径

Firestore REST API要求路径中必须指定数据库名称,默认数据库的固定标识为(default),你当前使用的URL缺失该段:
错误URL:
https://firestore.googleapis.com/v1/projects/${PROJECT_ID}/databases/documents
修正后的正确URL:
https://firestore.googleapis.com/v1/projects/${PROJECT_ID}/databases/(default)/documents
如果需要访问特定集合下的文档,直接在路径后拼接集合名/文档ID即可,例如访问users集合的完整路径为:
https://firestore.googleapis.com/v1/projects/${PROJECT_ID}/databases/(default)/documents/users

2. 配套排查项

如果修正URL后仍有报错,按以下顺序核对配置:

  • 确认代码中填入的PROJECT_ID、生成ID token时使用的API_KEY属于同一个Firebase项目,跨项目的凭证会被直接判定无效
  • 检查Authorization请求头格式:Bearer和token之间仅保留一个空格,token没有被截断、拼接多余字符
  • 确认使用的是刚生成的idToken,避免复用已经过期的凭证(idToken默认有效期为3600秒)

修正后的代码示例

const getDocsFromFirestore = async () => {
  const responseSignin = await getTokensBySigningIn();
  // 仅修改此处URL即可
  const URL_GET_FIRESTORE_DATABASES = `https://firestore.googleapis.com/v1/projects/${PROJECT_ID}/databases/(default)/documents`;
  const response = await fetch(URL_GET_FIRESTORE_DATABASES, {
    method: "GET",
    headers: {
      Authorization: `Bearer ${responseSignin.idToken}`,
    },
  });
  const responseFirestoreDB = await response.json();
  console.log(responseFirestoreDB);
};

你的Firebase安全规则配置没有问题,只要上述配置正确即可正常通过认证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 10:39:04