Firebase myFirebaseRef = new Firebase("https://my-riddle1.firebaseio.com/");
// step 5: write data
myFirebaseRef.child("aaa").setValue("aaa");
myFirebaseRef.child("message").setValue("The best Scores");
myFirebaseRef.child("BestScore").child("finalscore").child(name).setValue(score1);
我在我的代码中写了这个,但当我查看FireBase时,那里什么都没有。此外,我还完成了FireBase工作的所有步骤,就像它们在网站上显示的一样。
我该怎么办?感谢。
答案 0 :(得分:1)
快速猜测是您的数据库拒绝写操作。默认情况下,在firebase.google.com上创建的项目要求用户在访问数据库之前进行身份验证。
要验证这确实发生了什么,请将完成侦听器传递到setValue()
:
myFirebaseRef.child("aaa").setValue("aaa", new Firebase.CompletionListener() {
@Override
public void onComplete(FirebaseError firebaseError, Firebase firebase) {
if (firebaseError != null) {
System.out.println("Data could not be saved. " + firebaseError.getMessage());
} else {
System.out.println("Data saved successfully.");
}
}
});
如果由于您的安全规则确实写入被拒绝,您可以选择一些方法来解决问题。首先,您可以启用对数据库的公共访问。这不建议用于生产数据库,但通常在开发中可接受。或者(以及生产数据库的最佳选项),您可以在尝试编写数据库之前对用户进行签名。
您可以更改数据库的安全规则以允许公共访问。请参阅此page in the Firebase documentation上的第一个蓝色注释:
注意:默认情况下,对数据库的读写访问权限受到限制,因此只有经过身份验证的用户才能读取或写入数据。要在不设置Authentication的情况下开始使用,您可以configure your rules for public access。这确实使您的数据库对任何人开放,即使是不使用您的应用程序的人也是如此,因此请确保在设置身份验证时再次限制数据库。
您还使用Firebase 2.x SDK编写数据。对于在firebase.google.com上创建的项目,建议使用较新的SDK。有了这些,您可以轻松地匿名登录用户,然后设置值:
final FirebaseDatabase db = FirebaseDatabase.getInstance();
final FirebaseAuth auth = FirebaseAuth.getInstance();
auth.addAuthStateListener(new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in, write to the database
db.getReference().child("aaa").setValue("aaa");
} else {
// User is not signed in, sign them in now
auth.signInAnonymously();
}
}
});
这只是一个快速的代码片段,可以帮助您入门。我强烈建议您按照latest Firebase documentation for Android进行操作{@ 3}}。