我正在尝试使用Firebase Admin SDK将值保存到Firebase实时数据库,但是无论我做什么,都不会保存任何值。与教程不同,我从一个完全空的数据库开始:
我已连接到数据库(已使用.info / connected reference和ref.addValueEventListener验证)
安全规则允许读写
使用服务帐户,并且它的json文件似乎已正确解析并加载
如果我创建一个根引用对象,并打印其值,则它正确指向数据库URL
Firestore已创建了一个集合和文档,如果从Firestore视图切换到实时数据库,则数据库也将具有此集合和文档。
但是,如果我按根链接,则文档和集合将消失。我也经常看到“数据”为空。数据是文件吗?田野?只是说整个数据库是空的吗?有时,它在“ data:null”和“ coconut-xxx:null”之间交替,这很奇怪。
我也尝试引用/ telemetry / data并将其写入,但这没有用。当我将CompletionListener添加到setValue时,似乎从未调用过CompletionListener,因此连接挂起了什么?
我的代码:
String url = databaseUrl.getProtocol() + "://" + databaseUrl.getHost();
InputStream stream = getClass().getClassLoader().getResourceAsStream("firebaseCredentials.json");
GoogleCredentials credentials = GoogleCredentials.fromStream(stream);
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(credentials)
.setDatabaseUrl(url)
.build();
FirebaseApp.initializeApp(options);
DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
ref.setValueAsync("12345");
我也尝试像在教程中一样发送地图,但这也不起作用。
我猜可能唯一的其他问题是我正在IntelliJ Android Studio插件中执行此操作。不过,这似乎不太可能成为问题。
任何帮助表示赞赏。谢谢!
最佳答案
我发现了问题。我不知道这是怎么发生的,但是我的IntelliJ资源文件夹中的服务帐户JSON文件与用于椰子项目的服务帐户之间不匹配...
无论如何,实时数据库正在运行!