[英]How to get UID and add user information with Firebase email/password authentication
[英]How to add DisplayName with email + password authentication in Firebase? Android
private void registerUser(){
String emailId = email.getText().toString().trim().toLowerCase();
String password = pass.getText().toString().trim();
firebaseAuth.createUserWithEmailAndPassword(emailId,password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
progressDialog.dismiss();
if(task.isSuccessful()){
Toast.makeText(MainActivity.this,"Registration Successful",Toast.LENGTH_SHORT).show();
//show chatroom
finish();
startActivity(new Intent(getApplicationContext(),ProfileActivity.class));
}
else{
Toast.makeText(MainActivity.this,"Registration Failed. Please try again",Toast.LENGTH_SHORT).show();
}
}
});
}
我希望为其添加用户名或显示名称,但我无法这样做。 我尝试了一些但仍然没有结果。 请帮助我。 我本周需要为项目提交提供此功能。
这肯定是可能的,但不是在用户创建方法中。
一旦您创建了用户(可能在addOnSuccessListener
),您就可以使用类似于以下代码的内容来更新Users DisplayName:
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder().setDisplayName("John Smith").build();
user.updateProfile(profileUpdates);
希望这可以帮助!
编辑:我之前说过要将代码添加到AuthStateListener中,但是,Frank下面的建议将它放在addOnSuccessListener中更好/更有意义,所以我更新了答案以反映这一点。
我刚刚为自己的实现调查了这个问题(SDK版本4.4.1)。 我发现如果您确定使用来自注册/登录的完全相同的task.result对象而不是默认实例中的对象,它将完美地运行。
另一个帮助我的工作是在FB DB中有一个电子邮件参考表,如下所示:
{ "EmailRef": { "username1" : "email@ domain .com"}, {"username2" : "email2@domain.com"} }
然后使用如下方法通过用户的电子邮件(来自auth.CurrentUser.Email)查询用户名:
public static void GetCurrentUserName(Firebase.Auth.FirebaseUser user)
{
string message = "";
DatabaseReference dbRef = FbDbConnection();
FirebaseDatabase.DefaultInstance.GetReference("EmailRef").OrderByValue().EqualTo(user.Email).GetValueAsync().ContinueWith(task =>
{
if (task.IsFaulted)
{
message = "GetCurrentUserName encountered an error: " + task.Exception;
ModalManager.BuildFireBaseDebugModal(message);
Debug.LogError(message);
return;
}
if (task.IsCanceled)
{
message = "GetCurrentUserName was canceled.";
Debug.LogError(message);
return;
}
if (task.IsCompleted)
{
foreach (DataSnapshot ss in task.Result.Children.AsEnumerable())
{
try
{
if (ss.Value != null)
{
if (ss.Value.ToString() == user.Email)
{
message = "GetCurrentUserName was successful -- Email: " + user.Email + " Username: " + user.DisplayName;
Debug.LogError(message);
}
}
return;
}
catch (Exception ex)
{
message = "GetCurrentUserName Exception: " + ex;
Debug.LogError(message);
return;
}
}
}
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.