Skip to content Skip to sidebar Skip to footer

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.createUserWithEmail

Solution 1:

This is definitely possibly but just not in the user creation method.

Once you've created your user (possibly in the addOnSuccessListener) you can use something similar to the following code to update the Users DisplayName:

FirebaseUseruser= FirebaseAuth.getInstance().getCurrentUser();

UserProfileChangeRequestprofileUpdates=newUserProfileChangeRequest.Builder().setDisplayName("John Smith").build();

user.updateProfile(profileUpdates);

Hope this helps!

Edit: I previously said to add the code to the AuthStateListener, however, Frank's suggestion below to put it in the addOnSuccessListener is better/makes more sense so I have updated the answer to reflect this.

Solution 2:

I just recently investigated this issue for my own implementation (SDK version 4.4.1). What I've found is that it works perfectly if you are sure to utilize the exact same task.result object from registration/login and not the object from the default instance.

Another work around that helped me is to have an email reference table in your FB DB like this:

{ "EmailRef": { "username1" : "email@ domain .com"}, {"username2" : "email2@domain.com"} }

And then to query for the username by the user's email (from auth.CurrentUser.Email) using a method like this:

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

    });
}

Post a Comment for "How To Add Displayname With Email + Password Authentication In Firebase? Android"