Java 成功创建新用户后,您是否可以写入Firebase?
我在存储新创建的用户的额外信息时遇到问题Java 成功创建新用户后,您是否可以写入Firebase?,java,android,firebase,Java,Android,Firebase,我在存储新创建的用户的额外信息时遇到问题 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"))
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);
}
});
更新2
问题在于该规则,因为只有用户使用authWithPassword方法登录后,auth.uid才可用。所以我的许可被拒绝了。
但是,如果用户尚未登录,如何将写入限制为仅限于创建该位置的用户?您有两个操作:
onSuccess()
处理程序,但对于#2,您没有。您需要做的是:
这是否符合上述规则?我认为auth.uid在用户登录之前不可用,所以我不能限制在用户登录之前写入该位置。啊,是的。因此,您必须在中间添加一个<代码>引用。它正在变成一个嵌套良好的调用堆栈,但应该可以工作。
"Users" :{
"$user_id" :{
".read": true,
".write": "$user_id==auth.uid"
}
}
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.");
}
}
});