首页 > 解决方案 > Firebase 访问 Hackernews

问题描述

所以我想查看 Firebase 并尝试连接到Hackernews Firebase 数据库。我正在使用com.google.firebase:firebase-server-sdk:3.0.3sdk。

但我不知道为什么我被迫输入服务帐户。

@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 连接。有任何想法吗 ?有没有办法使用 Firebase Java API连接到Hackernews ?

标签: javafirebase

解决方案


不幸的是,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 编写的官方客户端库。


推荐阅读