后端服务器:如何保留 FirebaseApp 实例?

Backend server: how to retain FirebaseApp instance?

我一直在尝试将 Firebase Admin SDK 实施到我们的后端服务器 运行 JAVA 中。我的问题来源是这段代码,由Google:

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

FirebaseOptions options = new FirebaseOptions.Builder()
    .setCredentials(GoogleCredentials.fromStream(serviceAccount))
    .setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/")
    .build();

FirebaseApp.initializeApp(options);

我已经对其进行了测试并将其正确集成到我的代码中。但是,我不喜欢我需要在我的服务器中保留 serviceAccountKey.json 才能使用 Admin SDK。

我有两个简单的问题要问你们:

  1. 有没有办法避免我必须在服务器中存储敏感信息 (serviceAccountKey.json)(因为它可能被逆向工程)?
  2. 如果我使用自己的 MySQL 数据库,是否需要 .setDatabaseUrl(...)? Firebase 在他们的服务器上对我有效的唯一数据库是我的用户群,因为我使用 Firebase 身份验证。我将 UID 存储在我自己的数据库中以引用用户。
  1. 是的,有其他方法可以加载 Admin SDK 所需的配置,Hiranya Jayathilaka 在 this post 中提到了它:

    您可以创建一个类似于下面的 JSON 文件

    {  
        "databaseURL": "https://database-name.firebaseio.com",
        "projectId": "my-project-id",
        "storageBucket": "bucket-name.appspot.com"
    }
    

    然后在您的服务器中创建一个名为 FIREBASE_CONFIG 的环境变量,并将其设置为指向 JSON 文件。

    那么你只需要不带参数调用FirebaseApp.initializeApp()

  2. 顾名思义,该方法只需要指示实时数据库URL。如果你不使用它,它可以省略。