Firebase setDisplayName пользователя при создании пользователя Android

При создании пользователя я хочу настроить его / ее отображаемое имя. Как это сделать в Android? Вот пример того, чего я хочу достичь:

mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if(task.isSuccessful()){ FirebaseUser.getCurrentUser().setDisplayName(mName); //I want to do this } }); 

Предположим, что все переменные были объявлены и / или инициализированы правильно.

Я нашел ответ в документах Firebase. Я приведу его здесь: «Если вход был выполнен успешно, AuthStateListener запускает обратный вызов onAuthStateChanged. В обратном вызове вы можете использовать метод getCurrentUser для получения данных учетной записи пользователя». Вот ссылка: https://firebase.google.com/docs/auth/android/password-auth#sign_in_a_user_with_an_email_address_and_password

Таким образом, это означает, что если вы выполните вышеуказанный код (минус строка FirebaseUser), а затем объявите и инициализируйте Firebase AuthStateListener, как показано ниже, вы можете установить отображаемое имя пользователя, а затем перейти к любому другому действию, которое вы хотите:

 mAuthListener = new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { FirebaseUser user = firebaseAuth.getCurrentUser(); if(user!=null){ UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder() .setDisplayName(mName).build(); user.updateProfile(profileUpdates); Intent intent = new Intent(currentActivity.this, nextActivity.class); startActivity(intent); } } }; 

И не забудьте добавить AuthStateListener в onResume () следующим образом:

 @Override public void onResume(){ super.onResume(); mAuth.addAuthStateListener(mAuthListener); } 

Аналогично, не забудьте удалить его в методе onStop следующим образом:

 @Override public void onStop(){ super.onStop(); if(mAuthListener != null){ mAuth.removeAuthStateListener(mAuthListener); } } 

И сделано! Вы указываете отображаемое имя пользователя, чтобы использовать его в других действиях. Это было бы полезно, если вы хотите приветствовать пользователя или получить доступ к другим пользовательским данным, привязанным к отображаемому имени.

Кроме того, вы можете установить отображаемое имя Firebase для пользователя, написав следующие три строки кода:

 FirebaseUser user = mAuth.getCurrentUser(); UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder() .setDisplayName(mName).build(); user.updateProfile(profileUpdates); 

Поступая таким образом, ваш исходный код должен выглядеть следующим образом:

 mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if(task.isSuccessful()){ // Sign in success FirebaseUser user = mAuth.getCurrentUser(); UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder() .setDisplayName(mName).build(); user.updateProfile(profileUpdates); } }); 

Что это делает, так это то, что когда учетная запись пользователя была успешно создана с использованием аутентификации по электронной почте и паролю, она будет выполнять вход в систему. На этом этапе вы можете получить текущий объект User Firebase и установить его свойство отображаемого имени в любую нужную строку.

Это отлично подходит для тестирования электронных писем подтверждения.

Примечание . Объект User Firebase имеет фиксированный набор базовых свойств – уникальный идентификатор, основной адрес электронной почты, имя и URL-адрес фотографии, хранящиеся в пользовательской базе данных проекта, которые могут быть обновлены пользователем. Вы не можете напрямую добавлять другие объекты к объекту Firebase User; Вместо этого вы можете сохранить дополнительные свойства в своей базе данных Firebase Realtime. ( Пользовательский объект объектов Firebase Doc )

Intereting Posts
Как устранить черную рамку вокруг изображения Как разрешить пользователю просматривать / выбирать файл для моего приложения в Android? Нарисуйте изогнутый путь на холсте? VerifyError при использовании покрытия jacoco для Android Как получить изображение профиля facebook в приложении для Android? Использование RelativeLayout для вертикального разделения двух фрагментов равномерно Android: как получить имя пакета почтовых клиентов Не более автономное распознавание речи? Ошибка: java.lang.NullPointerException в android Ошибка Android в eclipse: не удалось разрешить целевой «android-xx» Одноранговая связь между мобильным приложением и браузером ПК Как автоматически определить необходимость iScroll? Индексирование приложений для динамического контента При кэшировании изображений и данных следует использовать внутреннее или внешнее хранилище? Intel HAXM / Android Studio в OS X 10.11 / El Capitan