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才可用。所以我的许可被拒绝了。
但是,如果用户尚未登录,如何将写入限制为仅限于创建该位置的用户?

您有两个操作:

  • 创建用户
  • 将用户的数据保存到数据库中
  • 对于#1,您有一个
    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.");
            }
        }
    });