如何将两个不同的Firebase项目连接到一个公共Firebase数据库?

时间:2016-09-07 07:22:04

标签: android firebase firebase-realtime-database

场景:

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

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

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

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

这是我尝试过的:

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

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

  3. 通过上述方法,它失败了。任何人都知道如何继续这个或是否有可能?

2 个答案:

答案 0 :(得分:0)

要将 firebase 的相同数据库用于两个或更多应用,请按照以下步骤操作。

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

你准备好了。

答案 1 :(得分:0)

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

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