【问题标题】:Does Firebase Admin SDK deployed at Cloud Run require GOOGLE_CLOUD_PROJECT env var?在 Cloud Run 上部署的 Firebase Admin SDK 是否需要 GOOGLE_CLOUD_PROJECT env var?
【发布时间】:2021-12-22 22:47:57
【问题描述】:

我们已向 Cloud Run 部署了一项使用 Firebase Admin SDK 的服务。此服务使用多种与身份验证相关的方法。我们发现如果不包含GOOGLE_CLOUD_PROJECT env var,setCustomUserClaims(...) 方法会抛出以下错误:Failed to determine project ID for Auth. Initialize the SDK with service account credentials or set project ID as an app option. Alternatively set the GOOGLE_CLOUD_PROJECT environment variable.

但是,我们还检查了如果 env var 不存在,其他方法(例如 createCustomToken(...))也可以正常工作。这怎么可能?我们是否应该使用 GOOGLE_CLOUD_PROJECT?

【问题讨论】:

  • 您是否提供了FIREBASE_CONFIG?对于 Firebase Cloud Functions,它是自动添加的,但对于 Cloud Run,您需要自己提供。有关 Functions 和 Admin SDK 使用的环境变量列表,请参见 this answer 的底部。

标签: firebase firebase-authentication firebase-admin google-cloud-run


【解决方案1】:

createCustomToken 在 SDK 中生成并签署其身份验证令牌。

这与setCustomUserClaims 形成对比,setCustomUserClaims 必须进行网络调用才能完成其工作,主要是对端点:

https://identitytoolkit.googleapis.com/{version}/projects/{projectId}/accounts:update

由于此端点使用项目 ID,因此需要从某个地方提供。

截至撰写本文时,它在these locations 中查找它,顺序如下:

  1. options.projectId from initializeApp()(这个一般用process.env.FIREBASE_CONFIG填写)
  2. options.credential.projectId 来自 initializeApp(),如果凭证是 ServiceAccountCredential
  3. process.env.GOOGLE_CLOUD_PROJECT
  4. process.env.GCLOUD_PROJECT
  5. options.credential.getProjectId() 来自 initializeApp(),如果凭证是 ComputeEngineCredential

【讨论】:

    猜你喜欢
    • 2020-08-30
    • 2021-09-09
    • 2023-02-14
    • 2021-09-03
    • 2020-10-30
    • 2021-08-10
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多