成功创建新用户后,您可以写入Firebase吗?

时间:2015-12-12 00:16:03

标签: 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")).setValue(screenname);
}
});

是否允许在onSuccess中写入Firebase?

更新

我有以下规则

"Users" :{
  "$user_id" :{
  ".read": true,
  ".write": "$user_id==auth.uid"
  }
}

更新2

问题在于规则,因为auth.uid不可用,直到用户使用authWithPassword方法登录。所以在我的情况下,许可被拒绝。 但是,如果他们尚未登录,我怎样才能将写入限制为仅创建它的用户?

1 个答案:

答案 0 :(得分:0)

你有两个动作:

  1. 创建用户
  2. 将用户的数据保存到数据库
  3. #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.");
            }
        }
    });