android - “无法到达 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.
对Task
a 的get()
调用Document
具有以下异常消息:
Failed to get document because the client is offline.
设备在线,这是肯定的。控制台中的新项目没有设置 SHA 证书指纹,因为我不能使用与原始项目相同的指纹。
我错过了什么?
[编辑]
解决方案
我知道答案有点晚了。就我而言,我遇到了同样的问题,因为我尝试测试 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();
之后,一切都开始正常工作。
推荐阅读
- python - 熊猫查询没有返回正确的DataFrame Python
- android - Socket/DataOutputStream/DataInputStream 可以打包吗?
- c++ - 使用 Rcpp 模块向 R 公开简单的 C++ Student 类
- python - argparse and custom Actions - code path not obvious
- sql - 过滤具有一对多父子映射的表的最有效方法
- sql - Alter Table Column Type 在 Aster 中不起作用 - 我可能搞砸了
- c# - 如何在 C# 中实例化整个 XAML Grid 对象?
- r - 使用 R 从 csv 文件分配树尖标签
- java - 编译器是否违反了范围规则?
- java - 用于多行记录或多行固定宽度文件的平面包 java