您可以在成功创建新用户时写入Firebase吗? [英] Can you write to Firebase when successfully created new 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);
}
});
是否允许在onSuccess中写入Firebase?
UPDATE
我有以下规则:
Users:{
$ user_id:{
.read:true,
.write:$ user_id == auth.uid
更新2 p>
问题在于规则,因为auth.uid不可用,直到用户使用authWithPassword方法登录。所以在我的情况下,许可被拒绝。
但是如何才能限制写入的位置,只有创建它的用户,如果他们还没有登录?
解决方案您有两项操作:
- 创建用户
- 保存用户的数据到数据库
您有一个 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:
- create a user
- 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屋!