我该在哪里获取Firebase Admin的"serviceAccountCredentials.json"文件?

86

这里说了我需要在Java上设置Firebase:

FirebaseOptions options = new FirebaseOptions.Builder()
    .setDatabaseUrl("https://databaseName.firebaseio.com")
    .setServiceAccount(new FileInputStream("path/to/serviceAccountCredentials.json"))
    .build();
FirebaseApp.initializeApp(options);

但我在哪里可以获得 serviceAccountCredentials.json 文件呢?

更新:我发现这个文件似乎应该有这些字段,但是这些值从哪里获取呢?

{
  "type": "",
  "project_id": "",
  "private_key_id": "",
  "private_key": "",
  "client_email": "",
  "client_id": "",
  "auth_uri": "",
  "token_uri": "",
  "auth_provider_x509_cert_url": "",
  "client_x509_cert_url": ""
}
2个回答

125

此链接中找到了相关细节。

[更新于2021年11月30日]

为你的服务帐户生成私钥文件:

在 Firebase 控制台中打开 设置 > 服务帐户

单击 生成新的私钥,然后通过单击 生成密钥 进行确认。

安全地存储包含密钥的 JSON 文件。

使用服务帐户进行授权时,有两种选择可供提供应用程序凭据。您可以设置 GOOGLE_APPLICATION_CREDENTIALS 环境变量,也可以在代码中显式传递服务帐户密钥的路径。第一种选项更安全,强烈建议使用。

NB:当您生成新的私钥时,旧密钥将立即停止工作

要创建新的私钥文件,需要访问此链接

https://console.firebase.google.com/project/**YOUR_PROJECT**/settings/serviceaccounts/adminsdk

[NEW]

来自Firebase文档的引用:

  1. 在您项目的设置页面中导航到服务帐户选项卡。
  2. 服务帐户选项卡的Firebase Admin SDK部分底部单击生成新的私钥按钮。

在点击按钮后,将下载一个包含服务帐户凭据的JSON文件。您需要这个文件来初始化下一步中的SDK。

警告:在处理代码中的服务帐号凭据时要格外小心。不要在公共存储库中提交它们,在客户端应用程序中部署它们或以任何可能危及您的Firebase项目安全的方式公开它们。

此文件仅生成一次。如果您丢失或泄露密钥,可以重复上述说明以创建服务帐户的新JSON密钥。


3
JSON文件应该保存在哪里? - xaunlopez
在您的项目源代码中的任何位置,或者在您自己的服务器端,只需将文件路径".setServiceAccount(new FileInputStream("path/to/serviceAccountCredentials.json"))"放置即可。 - NickUnuchek
1
项目源代码不好,因为无法提交到版本控制,而通过服务器端,您是指Firebase存储吗?我只是在使用Firebase Firestore和云函数。 - xaunlopez
6
当您生成新的私钥时,旧的私钥会立即停止工作吗? - Massimo Fazzolari
1
@perrosnk 是的,它将停止工作。此文件仅生成一次。如果您丢失或泄漏密钥,可以重复上述说明以为服务帐户创建新的JSON密钥。 - NickUnuchek
显示剩余2条评论

18

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接