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

Firebase Admin:verifyIdToken正常但getUser调用失败求助

问题:Firebase Admin调用getUser接口报403权限拒绝

我的Firebase Admin初始化配置如下:

firebaseAdmin.initializeApp({
  credential: applicationDefault(),
  projectId: "${my_project_id}",
});

其中verifyIdToken功能可以正常运行:

firebaseAdmin
    .app()
    .auth()
    .verifyIdToken(idToken)
    .then((decodedIDToken) => {
      console.log("decodedIDToken: ", decodedIDToken);
    })
    .catch((error) => {
      console.log("error: ", error);
    })

但调用getUser方法时抛出权限错误:

firebaseAdmin
      .app()
      .auth()
      .getUser(uuid)
      .then((data) => {
        console.log("user: ", data);
      })
      .catch((error) => {
        console.log("error: ", error);
      });

错误信息如下:

errorInfo: {
    code: 'auth/internal-error',
    message: '//cloud.google.com/docs/authentication/adc-troubleshooting/user-creds . Raw server response: "{"error":{"code":403,"message":"Your application is authenticating by using local Application Default Credentials. The identitytoolkit.googleapis.com API requires a quota project, which is not set by default. To learn how to set your quota project, see https://cloud.google.com/docs/authentication/adc-troubleshooting/user-creds .","errors":[{"message":"Your application is authenticating by using local Application Default Credentials. The identitytoolkit.googleapis.com API requires a quota project, which is not set by default. To learn how to set your quota project, see https://cloud.google.com/docs/authentication/adc-troubleshooting/user-creds .","domain":"usageLimits","reason":"accessNotConfigured","extendedHelp":"https://console.developers.google.com"}],"status":"PERMISSION_DENIED","details":[{"@type":"type.googleapis.com/google.rpc.ErrorInfo","reason":"SERVICE_DISABLED","domain":"googleapis.com","metadata":{"service":"identitytoolkit.googleapis.com","consumer":"projects/${some_project_ID"}}]}}"'
  },
  codePrefix: 'auth'
}

我已经做了以下操作:

  • 执行命令设置应用默认配额项目和默认项目:
$ gcloud auth application-default set-quota-project ${some_different project}
$ gcloud config set project ${my_project_id}
  • 确认两个项目均已启用Identity Toolkit API:
    Identity Toolkit API启用状态

解决方案

  1. 统一配额项目与Firebase项目
    错误提示明确指出Identity Toolkit API需要关联配额项目,你当前设置的配额项目与Firebase项目ID不一致,这会导致权限校验失败。执行以下命令将配额项目设置为你的Firebase项目ID:

    gcloud auth application-default set-quota-project ${my_project_id}
    
  2. 刷新应用默认凭证
    重新登录以确保配额项目的设置生效:

    gcloud auth application-default login
    
  3. 检查IAM角色权限
    确保应用默认凭证使用的账号在你的Firebase项目(${my_project_id})中拥有Firebase Auth Admin角色,或者至少包含identitytoolkit.users.get这个具体权限。

  4. 改用服务账号密钥初始化(备选方案)
    如果应用默认凭证的问题无法解决,可以直接使用Firebase项目的服务账号密钥进行初始化,绕过ADC的配额问题:

    const serviceAccount = require('./path/to/serviceAccountKey.json');
    
    firebaseAdmin.initializeApp({
      credential: firebaseAdmin.credential.cert(serviceAccount),
      projectId: "${my_project_id}"
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 22:52:50