我在存储有关新创建的用户的额外信息时遇到问题
myFirebaseRef.createUser(email, pass, new Firebase.ValueResultHandler<Map<String, Object>>() {
@Override
public void onSuccess(Map<String, Object> result)
{
myFirebaseRef.child("Users").child(result.get("uid")).setValue(screenname);
}
});
是否允许在onSuccess中写入Firebase?
更新
我有以下规则
"Users" :{
"$user_id" :{
".read": true,
".write": "$user_id==auth.uid"
}
}
更新2
问题在于规则,因为auth.uid不可用,直到用户使用authWithPassword方法登录。所以在我的情况下,许可被拒绝。 但是,如果他们尚未登录,我怎样才能将写入限制为仅创建它的用户?
答案 0 :(得分:0)
你有两个动作:
#1有一个onSuccess()
处理程序,但#2没有。{2}。您需要做的是add a completion listener:
myFirebaseRef
.child("Users")
.child(result.get("uid"))
.setValue(screenname, 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.");
}
}
});