【发布时间】:2018-08-07 14:21:55
【问题描述】:
我一直在使用 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 文件。此外,文档似乎提到身份验证可以通过其他方式进行(但他们没有详细说明),正如相关行所见:
The Admin SDKs can alternatively be authenticated with a different credential type
请注意,这几乎可以肯定是关于 Google Cloud Platform,但它似乎留下了一个打开的窗口,暗示其他版本的 SDK 也可能发生这种情况。
现在我的问题如下。假设我不想处理存储在文件系统中的 JSON 文件上的凭据存储,Java SDK 是否有另一种方法来检索它们?
欢迎任何帮助。
【问题讨论】:
-
GoogleCredentialJavadoc 显示了使用其构建器创建凭据的几种方法,您还可以在代码中使用InputStream的许多不同实现。您不受 API 限制为FileInputStream。
标签: java firebase firebase-authentication firebase-cloud-messaging firebase-admin