java - Firebase 访问 Hackernews
问题描述
所以我想查看 Firebase 并尝试连接到Hackernews Firebase 数据库。我正在使用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 连接。有任何想法吗 ?有没有办法使用 Firebase Java API连接到Hackernews ?
解决方案
不幸的是,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 编写的官方客户端库。
推荐阅读
- amazon-web-services - 使用 Terraform 的 Ansible 针对多个主机之一运行剧本
- javascript - React select - 在搜索时修复选项组
- android - Android:OpenId 将 AuthState 初始化为在发布版本上经过身份验证?
- java - 如何使用 Maven 包阶段调用 exec-maven-plugin 目标?
- opencv - 我有这个用于面罩检测的代码我想将 cv2.imshow("Frame",frame) 放在界面的一个区域(根)上。有人能帮我吗?
- mysql - Get time intervals where the process was on each stage on Jinja SQL
- python - 根据其他 col 值计算 col 的唯一出现次数
- python - VPN 指示器 ThinkScript 到 Python
- azure - Azure 计时器触发器在 .net 5 隔离函数应用中不起作用
- leaflet - 在点击/单击时,隐藏/显示 L.control(传单)