【发布时间】:2018-08-19 00:49:08
【问题描述】:
我正在尝试构建 java 应用程序来检索数据并将其保存到 Firebase 数据库。 我已经关注this link 并下载了服务帐户详细信息,并在项目中使用了相同的信息。我正在 IntelliJ 上构建一个项目并添加了所需的所有依赖项。但我无法在 Firebase 中保存/检索任何数据。 运行代码时我没有收到任何错误。
public class Database {
private static final String DATABASE_URL = "https://DATABASE-NAME.firebaseio.com";
private static final String FILE_NAME = "services-account-downloaded-file.json";
private static DatabaseReference database;
public static void main(String args[]) {
// Initialize Firebase
try {
// [START initialize]
FileInputStream serviceAccount = new FileInputStream(FILE_NAME);
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredential(FirebaseCredentials.fromCertificate(serviceAccount))
.setDatabaseUrl(DATABASE_URL)
.setDatabaseAuthVariableOverride(null)
.build();
FirebaseApp.initializeApp(options);
// [END initialize]
} catch (IOException e) {
System.out.println("ERROR: invalid service account credentials. See README.");
System.out.println(e.getMessage());
System.exit(1);
}
// Shared Database reference
database = FirebaseDatabase.getInstance().getReference();
startListeners();
try {
Thread.sleep(20000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void startListeners() {
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference ref = database.getReference().child("user");
ref.setValue("userdata", new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
if (databaseError != null) {
System.out.println("Data could not be saved " + databaseError.getMessage());
} else {
System.out.println("Data saved successfully.");
}
}
});
}
}
【问题讨论】:
-
将您的数据库规则更改为读取:true 和写入:true
-
已添加{ "rules": { ".read": true, ".write": true } }
-
@PeterHaddad firebase-admin 不需要。使用服务帐户初始化 SDK 可以使其完全访问所有内容。
标签: java firebase firebase-realtime-database firebase-admin