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

Java 后端服务器:如何保留FirebaseApp实例?,java,firebase,google-admin-sdk,firebase-admin,Java,Firebase,Google Admin Sdk,Firebase Admin,我一直在尝试将FirebaseAdminSDK实现到我们的后端服务器中,运行在JAVA上。我的问题来源于谷歌提供的这段代码: FileInputStream serviceAccount = new FileInputStream("path/to/serviceAccountKey.json"); FirebaseOptions options = new FirebaseOptions.Builder() .setCredentials(GoogleCredentials.from

我一直在尝试将Firebase
AdminSDK
实现到我们的后端服务器中,运行在JAVA上。我的问题来源于谷歌提供的这段代码:

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);
FileInputStream servicecomport=newfileinputstream(“path/to/serviceAccountKey.json”);
FirebaseOptions=newfirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(serviceAccount))
.setDatabaseUrl(“https://.firebaseio.com/")
.build();
FirebaseApp.initializeApp(选项);
我已经对它进行了测试,并将其正确地集成到我的代码中。但是,我不喜欢为了使用AdminSDK而需要将
serviceAccountKey.json
留在服务器中

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

  • 有没有办法防止我必须在服务器中存储合理的信息(
    serviceAccountKey.json
    )(因为它可能是反向工程的)
  • 如果我使用自己的MySQL数据库,是否需要
    .setDatabaseUrl(…)
    ?Firebase服务器上唯一有效的数据库是我的用户群,因为我使用Firebase身份验证。我将UID存储在自己的数据库中以引用用户
  • 是的,有其他方法加载Admin SDK所需的配置,Hiranya Jayathilaka在中提到了这一点:

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

    {  
        "databaseURL": "https://database-name.firebaseio.com",
        "projectId": "my-project-id",
        "storageBucket": "bucket-name.appspot.com"
    }
    
    然后在服务器中创建名为
    FIREBASE\u CONFIG
    的环境变量,并将其设置为指向JSON文件

    然后您只需要调用
    FirebaseApp.initializeApp()
    ,无需任何参数

  • 顾名思义,该方法仅用于指示实时数据库URL。如果你不使用它,它可以省略


  • 非常感谢。关于您的第一个答案:我相信我记得读过Firebase中的“Bucket”是一种付费功能。这是否意味着我需要支付服务费用才能使用这种方法?很抱歉我必须问这个问题,但是:什么是环境变量?我很难理解如何正确地修改这段代码。Bucket用于Firebase的云服务(如存储和Firestore)。但由于您只使用Firebase Auth,所以不必担心它。环境变量是存储在服务器上的变量。因为它是环境的一部分,所以它的公开方式与服务器公开json文件的方式不同。因此,将配置信息放在那里更安全。您可能希望查看服务器文档或internet上如何设置环境变量。只需快速谷歌一下。例如,如果您使用的是Tomcat服务器,google:“如何在Tomcat上设置env变量?”