Firebase 应用程序分发,无法使用服务帐户进行身份验证

问题描述 投票:0回答:1

我正在通过 Bitbucket 管道中的 Firebase CLI 使用 Firebase 应用程序分发,将应用程序部署到 Firebase。 只要我开始出现错误:

HTTP 错误:401,请求的身份验证凭据无效。需要 OAuth 2 访问令牌、登录 cookie 或其他有效的身份验证凭据。

FIREBASE_TOKEN 方法将很快被弃用并删除,我决定使用 GOOGLE_APPLICATION_CREDENTIAL 进行身份验证。

不幸的是,我无法使用 GOOGLE_APPLICATION_CREDENTIALS 进行身份验证,

- firebase appdistribution:distribute 

请求因错误而失败,完全忽略 GAC。

错误:身份验证失败,您是否运行了 firebase 登录?

在过去的三天里阅读了 firebase 文档并进行了故障排除,但无法使其正常工作。

  • 使用 Firebase App Distrib 创建 Google 服务帐户。管理员角色。
  • 已生成 JSON 密钥。
  • JSON 密钥内容直接在私有 GOOGLE_APPLICATION_CREDENTIALS 变量中声明。 如果我 echo GOOGLE_APPLICATION_CREDENTIALS 变量 public 我会得到精确的 JSON 密钥内容,就像我从 JSON 文件中获取它一样,所以理论上它应该有效(我正在尝试
{
  "type": "service_account",
  "project_id": "xxxx",
  "private_key_id": "xxx, ",
  "private_key": "-----BEGIN PRIVATE KEY-----\nxxxxx\n-----END PRIVATE KEY-----\n",
  "client_email": "xxxx",
  "client_id": "xxxx",
  "auth_uri": "xxxx",
  "token_uri": "xxxx",
  "auth_provider_x509_cert_url": "xxxx",
  "client_x509_cert_url": "xxxx",
  "universe_domain": "xxxx"
}

但是 firebase CLI 不使用它进行身份验证。无论如何。

firebase service-accounts firebase-tools firebase-app-distribution
1个回答
0
投票

我找到了解决方案。 GOOGLE_APPLICATION_CREDENTIALS 必须是 .json 文件的路径,而不是 JSON 密钥内容本身。

因此,无论如何,您都需要将密钥存储为文件,将 JSON 密钥内容放置在私有变量中(不需要字符转义),然后在脚本中您可以将其回显到 .json 文件,然后您可以在 GOOGLE_APPLICATION_CREDENTIALS 中使用该文件的路径变量。

echo $GAC_KEY > service-account.json export GOOGLE_APPLICATION_CREDENTIALS="/folder/service-account.json"
    
© www.soinside.com 2019 - 2024. All rights reserved.