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

时间:2018-07-22 16:17:13

标签: java firebase google-admin-sdk firebase-admin

我一直在尝试将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 个答案:

答案 0 :(得分:2)

  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。如果您不使用它,则可以将其省略。