“无法访问Firestore后端”,多个Firebase应用,Android

时间:2018-07-11 07:17:31

标签: android firebase google-cloud-firestore

我正在从实时数据库迁移到Firestore。因为我不能在同一项目中同时拥有Realtime数据库实例和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.

Task的{​​{1}}调用的get()异常消息为:

Document

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

我想念什么?

[编辑]

Warning message screenshot

Error message secreenshot

1 个答案:

答案 0 :(得分:0)

我知道答案来得有点晚。就我而言,我遇到了同样的问题,因为我尝试测试数据存储,而我失去了在项目中使用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();

此后,一切正常。