Firebase 工具:以服务帐号身份登录

Posted

技术标签:

【中文标题】Firebase 工具:以服务帐号身份登录【英文标题】:Firebase tools: login as service account 【发布时间】:2018-01-08 06:56:06 【问题描述】:

我找不到代表服务帐户部署 firebase 项目(功能)的方法。

documentation page 上没有任何内容,我在他们的bug tracker 上也没有发现任何相关内容。

如前所述,我运行了firebase login:ci 命令,但我需要自己登录 - 我想以服务帐户身份登录。

使用gcloud 工具可以使用此类功能,但是,如docs 中所述,

使用 Firebase SDK for Cloud Functions 编写的 Cloud Functions 无法使用 gcloud 命令行工具进行部署,反之亦然。

【问题讨论】:

由于文档明确表示这是不可能的,您的问题是什么? 文档说不可能使用 gcloud 工具来部署使用 firebase SDK 编写的云功能。它并不是说代表服务帐户使用 firebase-tools 进行部署是不可能的。我希望应该有一些方法 【参考方案1】:

firebaser 在这里

由于 Firebase CLI/工具的 version 7.1,它可以使用服务帐户进行身份验证。

也可以在这里查看迈克尔的回答:Login to firebase using gcloud service account

上一个答案:

要使用 Firebase CLI/工具,您需要以实际用户身份登录。无法将 Firebase CLI 作为服务帐户运行。

尽管它被认为是一个有效且有趣的功能请求!在this PR 中完成了一些可能有助于实现此功能的工作。像往常一样:没有提交是否/何时/如何实现。请关注release notes 以获取最新更新。

【讨论】:

这将是一个有用的功能。我们希望在成功构建后让 CI 自动部署到 firebase(托管和函数),而服务帐户似乎是明智的做法。 看起来这是合并了。 那里似乎正在发生一些事情...github.com/firebase/firebase-tools/issues/787 希望我们很快就能使用 GOOGLE_APPLICATION_CREDENTIALS 方法 :) 我已经使用服务帐户测试了新的 Firebase CLI v7.1.0,它现在就像一个魅力:github.com/firebase/firebase-tools/releases/tag/v7.1.0 @Dapp 是的,它无需浏览器登录步骤即可工作。从 v7.1.0 开始,我们可以使用 Firebase CLI 将 Firestore 和 Storage 规则部署为 CI/CD 管道中的构建步骤,只需使用 Cloud Build 的默认服务帐户(基本上就像我们使用 gcloudbqgsutil 那里)。但同样适用于具有自定义服务帐户凭据的 Gitlab、Bitbucket CI 等。【参考方案2】:

这行得通:

$> gcloud iam service-accounts keys create ./secrets.json --iam-account=<SERVICE_ACCOUNT_EMAIL>

$> export GOOGLE_APPLICATION_CREDENTIALS="./secrets.json"

$> firebase deploy --project <PROJECT_ID>

【讨论】:

【参考方案3】:

您实际上可以使用有权访问 Firebase 角色的 Google 帐户(服务帐户或其他帐户)的刷新令牌,并将其设置为 FIREBASE_TOKEN 环境变量。

例如,我使用 Cloud Build(它具有已登录到 gcloud 的关联服务帐户),然后将 FIREBASE_TOKEN 设置为 gcloud auth application-default print-access-token 的输出。

【讨论】:

感谢您提出的解决方案。基于此,我创建了一个专门的构建步骤,我只是想与其他人分享它:- name: 'gcr.io/cloud-builders/gcloud' entrypoint: /bin/bash args: ['-c', 'gcloud auth application-default print-access-token &gt; FIREBASE_TOKEN'] @thoutbeckers "服务帐户或其他"- 如何获取服务帐户的刷新令牌? 在我的情况下,服务帐户已经是设置帐户,但过去我使用--impersonate-service-account=SERVICE_ACCOUNT_EMAIL 标志和gcloud 来处理其他事情。确保您自己帐户的角色足够高(它需要iam.serviceAccounts.getAccessToken 权限)。如果可行,您可以在这里告诉我,我会更新答案。

以上是关于Firebase 工具:以服务帐号身份登录的主要内容,如果未能解决你的问题,请参考以下文章

让用户使用 Firebase 登录(自定义 iOS 身份验证)

Flutter:Fire Base 存储图像上传的后期初始化错误

我是 Flutter Web 的新手,如何使用 Firebase 电话身份验证对用户进行身份验证,有没有办法让用户保持登录状态?

使用firebase google身份验证单击登录按钮时总是会自动登录,而没有选择以其他用户身份登录的选项

如何使用 Firebase 登录多个社交服务?

Firebase 身份验证登录但成功登录后重定向到主页失败(服务器响应 200)