Java桌面应用连接Firebase:除REST API外的基础方案咨询
最简单的Java桌面应用连接Firebase方案
因为你的项目是课程结课作业,不要求安全,下面两个方案都是极简的实现方式:
方案1:Firebase Admin SDK(最省心的代码实现)
虽然官方标注Admin SDK为服务端工具,但完全可以在Java桌面程序中使用,步骤超简单:
- 登录Firebase控制台,进入项目设置→服务账号,点击「生成新的私钥」,下载JSON格式的密钥文件。
- 若使用Maven,将以下依赖添加到
pom.xml:
<dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>9.2.0</version> </dependency>
- 初始化SDK并完成基础读写的示例代码:
import com.google.firebase.FirebaseApp; import com.google.firebase.FirebaseOptions; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; import java.io.FileInputStream; public class FirebaseTest { public static void main(String[] args) { try { // 加载下载的密钥文件 FileInputStream serviceAccount = new FileInputStream("你的密钥文件路径.json"); FirebaseOptions options = new FirebaseOptions.Builder() .setCredentials(com.google.firebase.auth.FirebaseCredentials.fromCertificate(serviceAccount)) .setDatabaseUrl("你的Firebase实时数据库URL") .build(); FirebaseApp.initializeApp(options); // 写入数据到数据库 DatabaseReference ref = FirebaseDatabase.getInstance().getReference("test"); ref.child("message").setValue("Hello from Java Desktop!"); // 读取数据 ref.child("message").addListenerForSingleValueEvent(new com.google.firebase.database.ValueEventListener() { @Override public void onDataChange(com.google.firebase.database.DataSnapshot dataSnapshot) { String message = dataSnapshot.getValue(String.class); System.out.println("读取到的数据:" + message); } @Override public void onCancelled(com.google.firebase.database.DatabaseError databaseError) { System.out.println("读取失败"); } }); } catch (Exception e) { e.printStackTrace(); } } }
方案2:直接用HTTP请求(零依赖,最轻量化)
如果不想引入任何SDK依赖,直接用Java自带的HttpClient发请求即可,前提是先把Firebase实时数据库的安全规则改为完全开放(控制台→实时数据库→规则,替换为以下内容后发布):
{ "rules": { ".read": true, ".write": true } }
基础读写的示例代码:
import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; public class FirebaseHttpTest { private static final String DB_URL = "你的Firebase实时数据库URL/test/message.json"; public static void main(String[] args) { // 写入数据 try { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(DB_URL)) .POST(HttpRequest.BodyPublishers.ofString("\"Hello from HTTP!\"")) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println("写入响应:" + response.body()); } catch (Exception e) { e.printStackTrace(); } // 读取数据 try { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(DB_URL)) .GET() .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println("读取到的数据:" + response.body()); } catch (Exception e) { e.printStackTrace(); } } }
这个方案无需安装任何SDK,仅靠原生HTTP请求就能完成操作,完全满足课程项目的需求。
内容的提问来源于stack exchange,提问作者yvksk
相关产品推荐
相关产品推荐

