【问题标题】:How to connect to more than one firebase database from an android App如何从 Android 应用程序连接到多个 Firebase 数据库
【发布时间】:2016-10-04 17:22:00
【问题描述】:

我正在尝试在 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 项目?
  • 不,将信息添加到另一个数据库,而不是当前为 android 应用程序配置的数据库。
  • 然后只需使用另一个应用程序的firebase Url并向其添加信息。
  • 你能举个例子吗?配置数据库详细信息。

标签: android firebase firebase-realtime-database


【解决方案1】:

您需要在代码中使用显式选项初始化第二个 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 的属性。

另请参阅using multiple projects in your application 上的文档。

【讨论】:

  • 应用粉碎。 “FirebaseApp 名称 [DEFAULT] 已存在!”
  • 很抱歉。我将添加第二个“猜测”。如果还是不行,我就退出 Android Studio。
  • 我通常通过将应用程序放在单个活动或内容提供程序中来确保只初始化一次应用程序。但如果你想检查,你可以使用for (FirebaseApp app: FirebaseApp.getApps(getApplicationContext())) ...FirebaseApp.getInstance("secondApp") == null 循环遍历应用程序
  • 我把它放在一个 try catch 中。试试 { FirebaseApp app = FirebaseApp.initializeApp(c, options, "app");返回 FirebaseDatabase.getInstance(app); } catch (IllegalStateException e){ return FirebaseDatabase.getInstance(FirebaseApp.getInstance("app")); } ///这行得通。
  • @FrankvanPuffelen 先生,但是身份验证呢,我的意思是,如果我想通过电子邮件/通行证从第二个应用程序将用户注册到 firstApp 的数据库中?我可以这样使用它吗: FirebaseAuth auth = FirebaseAuth.getInstance(secondApp); ?
猜你喜欢
  • 2011-07-12
  • 1970-01-01
  • 2018-10-23
  • 2020-05-16
  • 2020-03-29
  • 1970-01-01
  • 2014-05-27
相关资源
最近更新 更多