后端服务器:如何保留 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。
我有两个简单的问题要问你们:
- 有没有办法避免我必须在服务器中存储敏感信息 (
serviceAccountKey.json
)(因为它可能被逆向工程)?
- 如果我使用自己的 MySQL 数据库,是否需要
.setDatabaseUrl(...)
? Firebase 在他们的服务器上对我有效的唯一数据库是我的用户群,因为我使用 Firebase 身份验证。我将 UID 存储在我自己的数据库中以引用用户。
是的,有其他方法可以加载 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()
。
顾名思义,该方法只需要指示实时数据库URL。如果你不使用它,它可以省略。
我一直在尝试将 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。
我有两个简单的问题要问你们:
- 有没有办法避免我必须在服务器中存储敏感信息 (
serviceAccountKey.json
)(因为它可能被逆向工程)? - 如果我使用自己的 MySQL 数据库,是否需要
.setDatabaseUrl(...)
? Firebase 在他们的服务器上对我有效的唯一数据库是我的用户群,因为我使用 Firebase 身份验证。我将 UID 存储在我自己的数据库中以引用用户。
是的,有其他方法可以加载 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()
。顾名思义,该方法只需要指示实时数据库URL。如果你不使用它,它可以省略。