Java Firebase SDK管理员设置凭据(静态JSON文件除外)

Java Firebase SDK管理员设置凭据(静态JSON文件除外),java,firebase,firebase-authentication,firebase-cloud-messaging,firebase-admin,Java,Firebase,Firebase Authentication,Firebase Cloud Messaging,Firebase Admin,我一直在玩弄Google的Firebase Admin SDK,虽然我已经配置并创建了推送通知所需的客户端,但FCM项目的凭据设置方式并不让我满意 目前,我正在使用提供的JSON文件设置项目的凭据,该文件当前存储在我的服务器的文件系统中,并按照相关文档所示进行检索: FileInputStream serviceAccount = new FileInputStream("path/to/serviceAccountKey.json"); FirebaseOptions options = n

我一直在玩弄Google的Firebase Admin SDK,虽然我已经配置并创建了推送通知所需的客户端,但FCM项目的凭据设置方式并不让我满意

目前,我正在使用提供的JSON文件设置项目的凭据,该文件当前存储在我的服务器的文件系统中,并按照相关文档所示进行检索:

FileInputStream serviceAccount = new FileInputStream("path/to/serviceAccountKey.json");

FirebaseOptions options = new FirebaseOptions.Builder()
  .setCredentials(GoogleCredentials.fromStream(serviceAccount))
  .setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/")
  .build();
虽然这在大多数情况下都可以正常工作,但它确实会在维护方面增加额外的负载,并导致另一个故障点,例如某人错误地删除了凭证文件

从这些文档中,我看到用于NodeJs的SDK允许临时设置与项目相关的凭证,这意味着不需要存在JSON文件。此外,文档似乎提到可以通过其他方式进行身份验证,但它们没有详细说明,这可以从以下相关行中看出:

管理员SDK也可以使用不同的凭据类型进行身份验证

请注意,这几乎肯定是关于谷歌云平台的,但它似乎打开了一个窗口,暗示其他版本的SDK也可能出现这种情况

现在我的问题如下。假设我不想处理JSON文件上的凭证存储,而JSON文件反过来存储在文件系统中,Java SDK是否有其他方法来检索凭证

欢迎提供任何帮助。

请注意,实际上并不是从文件中读取。它是从输入流读取的。该InputStream恰好是代码中的FileInputStream

您可以使用任何InputStream为您的代码提供您正在寻找的凭据,因此您有尽可能多的选项作为数据源的流类型


只有您知道您的实际选择是什么,因为我们这些阅读问题的人不熟悉您的运行时环境或您如何打包代码。但是我相信您在这里有很大的灵活性。

展示了使用其生成器创建凭据的几种方法,您还可以在代码中使用许多不同的InputStream实现。API并没有将您限制在FileInputStream中。确实,您在这一点上是正确的,我在这个问题上的措辞可能并不完全正确。那么让我换一种说法。我知道我可以使用任何我喜欢的InputStream,例如,我想把它们存储在db中并从那里检索它们。我的主要问题是,有没有办法通过提供(比如)相关项目的帐户凭据来从Google临时检索它们?没有。你可以把凭据想象成密码。有一个API来检索密码会打开各种安全问题的大门。或者,拥有一个密码来获取另一个更安全的密码似乎也是一个问题。您需要在使用时提供密码。