单个 Android 应用程序中的多个 Firebase 项目

问题描述

我正在尝试使用 Firebase 构建一个 android 应用程序,该应用程序需要在一个应用程序中使用两个独立的数据库(教师和学生)。我在互联网上搜索解决方案,但我得到的只是这个解决方案 - Multiple Firebase projects in one app,这似乎是一个很好的解决方案,但我不明白。

那么,如何在一个应用程序中合并两个 firebase 项目?

解决方法

您不再需要实施该链接中描述的社区解决方案。

根据this

有时您需要使用相同的 API 访问不同的项目 - 例如,访问多个数据库实例。在大多数情况下,有一个中央 Firebase 应用程序对象来管理所有 Firebase API 的配置。该对象作为您正常设置的一部分进行初始化。但是,当您想从单个应用程序访问多个项目时,您需要一个不同的 Firebase 应用程序对象来单独引用每个项目。由您来初始化这些其他实例。

您需要首先创建一个 Firebase 选项对象来保存 Firebase 应用程序的配置数据,如下所示:

// Manually configure Firebase Options. The following fields are REQUIRED:
//   - Project ID
//   - App ID
//   - API Key
FirebaseOptions options = new FirebaseOptions.Builder()
    .setProjectId("my-firebase-project")
    .setApplicationId("1:27992087142:android:ce3b6448250083d1")
    .setApiKey("AIzaSyADUe90ULnQDuGShD9W23RDP0xmeDc6Mvw")
    // setDatabaseURL(...)
    // setStorageBucket(...)
    .build();

初始化此选项对象后,您可以使用它来配置额外的 Firebase 应用程序实例。

例如,如果您有另一个名为“otherApp”的应用实例,则可以执行以下操作:

// Initialize with secondary app
FirebaseApp.initializeApp(this /* Context */,options,"otherApp");

// Retrieve secondary FirebaseApp
FirebaseApp secondary = FirebaseApp.getInstance("otherApp");

通过这种方式,您可以连接到另一个实时数据库。

,

是的,您可以遵循该指南 https://firebase.google.com/docs/projects/multiprojects#java

基本上,您需要手动启动提供配置的 firebase 应用

        // [START firebase_options]
    // Manually configure Firebase Options. The following fields are REQUIRED:
    //   - Project ID
    //   - App ID
    //   - API Key
    FirebaseOptions options1 = new FirebaseOptions.Builder()
            .setProjectId("my-firebase-project")
            .setApplicationId("1:27992087142:android:ce3b6448250083d1")
            .setApiKey("AIzaSyADUe90ULnQDuGShD9W23RDP0xmeDc6Mvw")
            // setDatabaseURL(...)
            // setStorageBucket(...)
            .build();
    FirebaseOptions options2 = new FirebaseOptions.Builder()
            .setProjectId("my-firebase-project")
            .setApplicationId("1:27992087142:android:ce3b6448250083d1")
            .setApiKey("AIzaSyADUe90ULnQDuGShD9W23RDP0xmeDc6Mvw")
            // setDatabaseURL(...)
            // setStorageBucket(...)
            .build();
    // [END firebase_options]


    // [START firebase_secondary]
    // Initialize with secondary app
    FirebaseApp.initializeApp(this /* Context */,options1,"first");
    FirebaseApp.initializeApp(this /* Context */,options2,"secondary");


    FirebaseApp first = FirebaseApp.getInstance("first");
    FirebaseApp secondary = FirebaseApp.getInstance("secondary");

您可以从 google-service.json

获取所有必需的数据

enter image description here

enter image description here

稍后您可以从该 FirebaseApp 中获取数据库,例如

FirebaseDatabase secondaryDatabase = FirebaseDatabase.getInstance(secondary);

然后你就可以像以前一样处理这个项目了。

,

您提到的示例可以按以下方式使用。 您可以在firebase db中创建两个主表,然后您可以通过

进行操作
val reference = FirebaseDatabase.getInstance().getReference()
val teacher = reference.child("teacher")//refers to the teacher table
val student = reference.child("student")//refers to the student table