我一直在使用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();
虽然这在大多数情况下工作得很好,但它确实提供了额外的负载维护以及另一个故障点(例如有人错误地删除了凭据文件)。
从文档中我发现用于NodeJ的SDK允许ad hoc设置项目相关的凭据,这意味着不需要存在JSON文件。此外,文档似乎也提到了身份验证可以通过其他方式进行(但它们没有详细说明),这可以通过以下相关内容看出:
The Admin SDKs can alternatively be authenticated with a different credential type
请注意,这几乎肯定与谷歌云平台有关,但它似乎留下了一个窗口,暗示其他版本的SDK也会出现这种情况。
现在我的问题如下。假设我不想对存储在文件系统中的JSON文件上的凭证存储进行处理,Java SDK是否有另一种方法来检索它们?
任何帮助都非常受欢迎。
答案 0 :(得分:1)
请注意,GoogleCredentials.fromStream(serviceAccount)实际上并未从文件中读取。它是从InputStream读取的。该InputStream恰好是代码中的FileInputStream。
您可以使用任何能够为您的代码提供您正在寻找的凭据的InputStream,因此您可以选择与您的数据来源类型相同的选项。
只有您知道您的真实选择是什么,因为我们这些阅读问题的人并不熟悉您的运行时环境或您如何打包代码。但我相信你在这里有很大的灵活性。