所以我想查看 Firebase 并尝试连接到 Hackernews火力地堡数据库。
我正在使用 com.google.firebase:firebase-server-sdk:3.0.3
SDK。
但我不确定为什么我必须输入服务帐户。
@Bean
fun firebase(): DatabaseReference {
val options = FirebaseOptions.Builder()
.setDatabaseUrl("https://hacker-news.firebaseio.com/")
.setServiceAccount(this.javaClass.getResourceAsStream("/account.json"))
.build()
val app = FirebaseApp.initializeApp(options)
val instance = FirebaseDatabase.getInstance(app)
return instance.reference
}
为什么在这种情况下需要 setServiceAccount?如果我将其排除在外,则会出现以下异常:
Caused by: java.lang.IllegalStateException: Service Account must be provided.
at com.google.firebase.internal.Preconditions.checkState(Preconditions.java:173) ~[firebase-server-sdk-3.0.3.jar:na]
at com.google.firebase.FirebaseOptions.<init>(FirebaseOptions.java:129) ~[firebase-server-sdk-3.0.3.jar:na]
有没有办法用 Java 客户端匿名连接到 Firebase? 这个 JsFiddle 在没有服务帐户的情况下工作: http://jsfiddle.net/firebase/cm8ne9nh/
如果我连接到我自己的项目,这个工作非常好。我确实有一个适合我自己的项目的服务帐户......
我以为我可以用同样的方式连接 Java。 有任何想法吗 ?有没有办法连接到 Hackernews使用 Firebase Java API?
最佳答案
遗憾的是,Java SDK 仅提供两种版本。 Java-Client-Android 和 Java-Server。这意味着,如果你想要纯客户端代码,你只能在 android 上真正使用它。这一直是可用客户端库的一个奇怪限制。
但是,您可以做的是用 Java 包装 firebase 提供的 REST API,使用 HTTP 请求执行您在任何客户端库中执行的所有操作。
这里是已经实现此功能的存储库示例:https://github.com/j-fischer/rest-on-fire
您可以使用那个,也可以使用您自己的。但是为了在没有服务帐户的情况下使用 firebase,您将不得不使用 REST Api 或仅为 Android、iOS 和 Web 编写的官方客户端库。
关于java - Firebase 访问 Hackernews,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50974755/