如何从Android应用连接到多个Firebase数据库

19

我想在Firebase中创建一个项目,负责所有应用程序的共同事项。

也就是说,我想创建应用程序,然后让这些应用程序访问一个特定的Firebase数据库。

查看Firebase Android文档,我发现无法使用以下方法将数据发送到另一个项目中的另一个Firebase数据库,其中引用了另一个项目。

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("example");
        ref.push().setValue(d).addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                finish();
            }
        });

据我所理解,您是否正在尝试从您的Android代码中创建一个新的Firebase项目? - Parag Kadam
不,将信息添加到另一个数据库中,而不是当前配置为Android应用程序的数据库。 - Relm
然后只需使用另一个应用程序的Firebase URL,并向其添加信息。 - Parag Kadam
你能举个例子吗?配置数据库细节。 - Relm
1个回答

38
你需要在你的代码中使用明确的选项来初始化第二个 FirebaseApp 对象:
FirebaseOptions options = new FirebaseOptions.Builder()
        .setApiKey("AI...j0")
        .setApplicationId("1:5...e0")
        .setDatabaseUrl("https://myapp.firebaseio.com")
        .build();
FirebaseApp secondApp = FirebaseApp.initializeApp(getApplicationContext(), options, "second app");
FirebaseDatabase secondDatabase = FirebaseDatabase.getInstance(secondApp);
secondDatabase.getReference().setValue(ServerValue.TIMESTAMP);

我从第二个项目的 google-services.json 文件中获取了配置值。API 密钥位于名为 api_key 的属性下,应用程序 ID 来自名为 mobilesdk_app_id 的属性,数据库 URL 来自名为 firebase_url 的属性。

另请参阅有关在应用程序中使用多个项目的文档:使用多个项目


1
抱歉,我会添加第二个“猜测”。如果还不行,我会使用Android Studio。 - Frank van Puffelen
1
通常我会通过将应用程序放在单个活动或内容提供程序中来确保只初始化一次应用程序。但是如果您想要检查,可以使用 for (FirebaseApp app: FirebaseApp.getApps(getApplicationContext())) ...FirebaseApp.getInstance("secondApp") == null 循环遍历应用程序。 - Frank van Puffelen
2
我将它放在try catch块中。try { FirebaseApp app = FirebaseApp.initializeApp(c, options, "app"); return FirebaseDatabase.getInstance(app); } catch (IllegalStateException e){ return FirebaseDatabase.getInstance(FirebaseApp.getInstance("app")); } ///这样就可以了。 - Relm
1
@FrankvanPuffelen 先生,那认证方面怎么办呢?我的意思是,如果我想从第二个应用程序中使用电子邮件/密码注册用户到第一个应用程序的数据库中,我可以像这样使用吗:FirebaseAuth auth = FirebaseAuth.getInstance(secondApp)? - Abhinav Raja
@FrankvanPuffelen,您能否请解答一下我的相关问题https://stackoverflow.com/questions/44866220? - bibscy
显示剩余11条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接