【问题标题】:How to connect two different Firebase projects to a single common Firebase database?如何将两个不同的 Firebase 项目连接到一个通用的 Firebase 数据库?
【发布时间】:2017-01-14 18:35:21
【问题描述】:

场景:

我们在 Firebase 中有两个不同的项目,名为:CustomerMerchant

这两个项目是在 Firebase 控制台中创建的,因此它们都有不同的项目 ID,它们不能合并到一个项目中。他们每个人都使用 Firebase 的远程配置功能,因此在各自的项目中都已经有了 google-services.json 配置文件。

现在,我们需要引入使用 Firebase 的实时聊天功能,并希望在客户和商家之间进行一对一的聊天。如果我们使用 Firebase,那么它会声明即使我们创建了另一个项目 Chat,但它还有另一个 google-services.json 配置文件,这将与两个项目中现有的配置文件冲突。

意思是,如果我们采用客户应用程序,那么它已经有一个 Firebase 配置。那么如何在其中添加另一个聊天 Firebase 配置呢?

这是我尝试过的:

  1. 创建了另一个名为 Chat 的 Android 项目,并将其各自的 Firebase 配置添加到其中,然后将其作为模块添加到客户 Android 项目中,该项目已经拥有自己的 Firebase 配置。因此,当我编译它时,它认为主应用程序是客户应用程序配置文件作为 Firebase 配置。它根本没有考虑聊天模块 JSON 配置。

  2. 在这种方法中,我尝试使用答案here 以编程方式打开另一个 Firebase 实例。但是,当我尝试将任何消息推送到聊天 Firebase 数据库时,连接会关闭并显示消息 wrong project id,因为 Firebase 实例正在考虑客户应用程序的 ID。

使用上述方法,它失败了。任何人都知道如何进行此操作,或者是否可能?

【问题讨论】:

  • @VishalPatoliya 它不允许我们更改网址。你说的是数据库 url?
  • 不,不允许。
  • 嗨。这似乎太宽泛了。详细说明需要做什么。因为读进去了。你刚刚解释了你的情况。除此之外,没有其他细节。
  • @AL 编辑了问题。
  • @Yvette 编辑了问题

标签: android firebase firebase-realtime-database


【解决方案1】:

要对两个或多个应用程序使用相同的 firebase 数据库,只需按照以下步骤操作即可。

  • 转到您的 firebase 项目控制台
  • 点击左上角的概览
  • 点击添加另一个项目。
  • 选择您的平台
  • 输入 firebase 询问的项目详细信息 下载并将config文件添加到您的项目中。

你准备好了。

【讨论】:

    【解决方案2】:

    要从另一个项目连接到另一个 Firebase 实时数据库,您首先需要为该其他 Firebase 项目初始化一个 FirebaseApp 实例,并为其指定一个标识符 - 在本例中为“辅助”:

    FirebaseOptions options = new FirebaseOptions.Builder()
       .setApplicationId("1:530266078999:android:481c4ecf3253701e") // Required for Analytics.
       .setApiKey("AIzaSyBRxOyIj5dJkKgAVPXRLYFkdZwh2Xxq51k") // Required for Auth.
       .setDatabaseUrl("https://project-1765055333176374514.firebaseio.com/") // Required for RTDB.
       .build();
    FirebaseApp.initializeApp(this /* Context */, options, "secondary");
    

    然后,您可以使用相同的客户端 API 访问数据库,但这次通过将相关 FirebaseApp 传递给 FirebaseDatabase.getInstance() 来指定您要访问的项目:

    // Retrieve my other app.
    FirebaseApp app = FirebaseApp.getInstance("secondary");
    // Get the database for the other app.
    FirebaseDatabase secondaryDatabase = FirebaseDatabase.getInstance(app);
    

    如果您需要访问项目的默认数据库,请使用:

    FirebaseDatabase database = FirebaseDatabase.getInstance();
    

    更多信息请查看this article

    【讨论】:

      猜你喜欢
      • 2021-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-02
      • 2020-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多