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 的默认服务帐户(基本上就像我们使用gcloud
、bq
或gsutil
那里)。但同样适用于具有自定义服务帐户凭据的 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 > FIREBASE_TOKEN']
@thoutbeckers "服务帐户或其他"- 如何获取服务帐户的刷新令牌?
在我的情况下,服务帐户已经是设置帐户,但过去我使用--impersonate-service-account=SERVICE_ACCOUNT_EMAIL
标志和gcloud
来处理其他事情。确保您自己帐户的角色足够高(它需要iam.serviceAccounts.getAccessToken
权限)。如果可行,您可以在这里告诉我,我会更新答案。以上是关于Firebase 工具:以服务帐号身份登录的主要内容,如果未能解决你的问题,请参考以下文章
让用户使用 Firebase 登录(自定义 iOS 身份验证)
Flutter:Fire Base 存储图像上传的后期初始化错误
我是 Flutter Web 的新手,如何使用 Firebase 电话身份验证对用户进行身份验证,有没有办法让用户保持登录状态?