部署在云端 运行 的 Firebase Admin SDK 是否需要 GOOGLE_CLOUD_PROJECT env var?
Does Firebase Admin SDK deployed at Cloud Run require GOOGLE_CLOUD_PROJECT env var?
我们已将服务部署到云端 运行,它使用 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.
但是,我们还检查了如果环境变量不存在,其他方法(例如 createCustomToken(...)
)也可以正常工作。这怎么可能?我们应该使用 GOOGLE_CLOUD_PROJECT 还是不使用?
createCustomToken
在 SDK 中铸造并签署其身份验证令牌。
这与 setCustomUserClaims
形成对比,后者必须进行网络调用才能完成其工作,主要是到端点:
https://identitytoolkit.googleapis.com/{version}/projects/{projectId}/accounts:update
由于此端点使用项目 ID,因此需要从某处提供。
截至撰写本文时,它按以下顺序在 these locations 中查找:
options.projectId
from initializeApp()
(这通常由process.env.FIREBASE_CONFIG
填写)
options.credential.projectId
来自 initializeApp()
,如果凭证是 ServiceAccountCredential
process.env.GOOGLE_CLOUD_PROJECT
process.env.GCLOUD_PROJECT
options.credential.getProjectId()
来自 initializeApp()
,如果凭证是 ComputeEngineCredential
我们已将服务部署到云端 运行,它使用 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.
但是,我们还检查了如果环境变量不存在,其他方法(例如 createCustomToken(...)
)也可以正常工作。这怎么可能?我们应该使用 GOOGLE_CLOUD_PROJECT 还是不使用?
createCustomToken
在 SDK 中铸造并签署其身份验证令牌。
这与 setCustomUserClaims
形成对比,后者必须进行网络调用才能完成其工作,主要是到端点:
https://identitytoolkit.googleapis.com/{version}/projects/{projectId}/accounts:update
由于此端点使用项目 ID,因此需要从某处提供。
截至撰写本文时,它按以下顺序在 these locations 中查找:
options.projectId
frominitializeApp()
(这通常由process.env.FIREBASE_CONFIG
填写)options.credential.projectId
来自initializeApp()
,如果凭证是ServiceAccountCredential
process.env.GOOGLE_CLOUD_PROJECT
process.env.GCLOUD_PROJECT
options.credential.getProjectId()
来自initializeApp()
,如果凭证是ComputeEngineCredential