首页 > 解决方案 > “无法到达 Firestore 后端”,多个 Firebase 应用,Android

问题描述

我正在从实时数据库迁移到 Firestore。因为我不能在同一个项目中同时拥有实时数据库实例和 Firestore 实例,所以我必须手动初始化 Firestore 实例,而不是让它google-services.json在构建过程中自动获取文件。我已经这样做了:

    FirebaseOptions firebaseOptions = new FirebaseOptions.Builder()
            .setProjectId("***")
            .setApiKey("***")
            .setApplicationId("***")
            .setDatabaseUrl("https://***.firebaseio.com")
            .build();
    FirebaseApp firebaseApp = FirebaseApp.initializeApp(this, firebaseOptions, "dev");
    FirebaseFirestore db = FirebaseFirestore.getInstance(firebaseApp);

所有值都取自google-services.json我为新项目下载的文件。

调用FirebaseFirestore.getInstance()很好,但是当我稍后尝试获取文档时,我在 logcat 中看到了这个:

W/Firestore: (0.6.6-dev) [OnlineStateTracker]: Could not reach Firestore backend.

Taska 的get()调用Document具有以下异常消息:

Failed to get document because the client is offline.

设备在线,这是肯定的。控制台中的新项目没有设置 SHA 证书指纹,因为我不能使用与原始项目相同的指纹。

我错过了什么?

[编辑]

警告信息截图

错误信息截图

标签: androidfirebasegoogle-cloud-firestore

解决方案


我知道答案有点晚了。就我而言,我遇到了同样的问题,因为我尝试测试 Datastore,但我失去了在我的项目中使用 Firestore 的可能性。当我尝试为 Firestore 创建一个新项目时,我必须手动初始化 Firestore 实例,我遇到了同样的问题。

在我的情况下,问题是 FirebaseOptions 的参数之一是错误的(在我的情况下是 project_id,因为我放了 project_number)。我从新项目的 google_services.json 中获取了所有参数:

FirebaseOptions.Builder()
            .setApplicationId("X:XXXXXXXX:android:YYYYYYY") // FROM client_info -> mobilesdk_app_id.
            .setApiKey("AIzaXXXXXXXXXXX") // FROM api_key -> current_key
            .setDatabaseUrl("https://XXXXXXX.firebaseio.com") // FROM firebase_url.
            .setProjectId("XXXXXXXX") //FROM project_id
            .setStorageBucket("XXXXXXX.appspot.com") //FROM storage_bucket
            .build();

之后,一切都开始正常工作。


推荐阅读