如何在 firebase 实时数据库中设置用户名
How to set users name in firebase realtime-database
当我创建新帐户时,其名称等于用户 UID 是否可以将其更改为自定义名称?
我的代码
mAuth.createUserWithEmailAndPassword(Email, Password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
User user = new User(Name, LastName, Email);
curentUser = Name + " " + LastName;
FirebaseDatabase.getInstance().getReference("No server")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.setValue(user).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Toast.makeText(MainActivity.this, "User has been registered successfully!", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(MainActivity.this,"Failed to register! try again!", Toast.LENGTH_LONG).show();
}
}
});
}else{
Toast.makeText(MainActivity.this,"Failed to register! try again!", Toast.LENGTH_LONG).show();
}
}
});
看起来如何
您不能在不读取值的情况下更改 Firebase 实时数据库中现有值的键,将其写入新键下,然后删除旧键。
也就是说,您自己选择了用户对象的键:
FirebaseDatabase
.getInstance().getReference()
.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.setValue(user)
child
方法包含您在 setValue
中设置的值的键。您为此使用当前用户的 UID。
您可以将其更改为您喜欢的任何值。例如,您可以将用户的电子邮件作为键 (see reference for current user object):
.child(FirebaseAuth.getInstance().getCurrentUser().getEmail())
注意:请参阅下面@puf 的评论,您可能希望在用作密钥时对电子邮件地址进行编码。
当我创建新帐户时,其名称等于用户 UID 是否可以将其更改为自定义名称?
我的代码
mAuth.createUserWithEmailAndPassword(Email, Password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
User user = new User(Name, LastName, Email);
curentUser = Name + " " + LastName;
FirebaseDatabase.getInstance().getReference("No server")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.setValue(user).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Toast.makeText(MainActivity.this, "User has been registered successfully!", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(MainActivity.this,"Failed to register! try again!", Toast.LENGTH_LONG).show();
}
}
});
}else{
Toast.makeText(MainActivity.this,"Failed to register! try again!", Toast.LENGTH_LONG).show();
}
}
});
看起来如何
您不能在不读取值的情况下更改 Firebase 实时数据库中现有值的键,将其写入新键下,然后删除旧键。
也就是说,您自己选择了用户对象的键:
FirebaseDatabase
.getInstance().getReference()
.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.setValue(user)
child
方法包含您在 setValue
中设置的值的键。您为此使用当前用户的 UID。
您可以将其更改为您喜欢的任何值。例如,您可以将用户的电子邮件作为键 (see reference for current user object):
.child(FirebaseAuth.getInstance().getCurrentUser().getEmail())
注意:请参阅下面@puf 的评论,您可能希望在用作密钥时对电子邮件地址进行编码。