您可以在成功创建新用户时写入Firebase吗? [英] Can you write to Firebase when successfully created new user?

查看:104
本文介绍了您可以在成功创建新用户时写入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?



UPDATE



我有以下规则:

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




更新2 p>

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

解决方案

您有两项操作:


  1. 创建用户

  2. 保存用户的数据到数据库

您有一个 onSuccess()但不是#2。您需要做的是添加完成监听器

  myFirebaseRef 
.child(Users)
.child(result.get (uid))
.setValue(screenname,new Firebase.CompletionListener(){
@Override $ b $ public void onComplete(FirebaseError firebaseError,Firebase firebase){$ b $ if(firebaseError (无法保存数据+ firebaseError.getMessage());
} else {
System.out.println(Data保存成功);
}
}
});


I am having a problem storing extra information about the newly created user

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);
}
});

Is it allowed to write in onSuccess to Firebase?

UPDATE

I have the following rule

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

UPDATE 2

The problem is with the rule, as the auth.uid is not available untill the user is logged in using the authWithPassword method. So in my case permission is denied. But how can I limited the write to the location only to the user creating it if they are not logged in yet?

解决方案

You have two actions going on:

  1. create a user
  2. save the user's data to the database

You have an onSuccess() handler for #1, but not for #2. What you need to do is 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.");
        }
    }
});

这篇关于您可以在成功创建新用户时写入Firebase吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆