Чтобы получить отображаемое имя, вам потребуется настроить его при создании новой учетной записи с адресом электронной почты и паролем
Например,
mAuth.createUserWithEmailAndPassword(email,pass).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
saveUser(email,pass,name);
FirebaseUser user = mAuth.getCurrentUser();
UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder().setDisplayName(name).build();
user.updateProfile(profileUpdates);
finish();
...
Теперь вам потребуетсяAuthStateListener
, а затем, когда он будет завершен (вы успешно вошли в систему или создали учетную запись), вы можете получить имя.Поскольку firebase управляет этим асинхронным
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
usuario.setNome(firebaseUser.getDisplayName());
} else {
finish();
...
Проверьте UserProfileChangeRequest Здесь
Важно
Если вы входите в систему с таким провайдером, какПри входе в Google он будет автоматически обрабатывать ваше отображаемое имя (а также фотографию профиля), и просто вызов user.getDisplayName()
без настройки будет выполнять работу правильно
Помните, что при создании новой учетной записи сemailAndPassword, идентификатор учетной записи и электронная почта автоматически сохраняются в Firebase, поэтому вы можете получить доступ к этим данным без их настройки.Это пример метаданных, которые создаются вместе с пользователем.В этом случае метаданными, определяющими вашего пользователя, являются только идентификатор пользователя и адрес электронной почты.
![enter image description here](https://i.stack.imgur.com/Dmj9X.jpg)
Но для этой учетной записи никогда не устанавливается displayName или photoUri, поэтому их также необходимо настроить при создании новой учетной записи.как я упоминал выше.
Совет
Избегайте использования собственных методов, подобных этому, вы будете растеряны, когда приложение масштабируется.
public static FirebaseAuth getFirebaseAutenticacao(){
if (auth == null) {
auth = FirebaseAuth.getInstance();
}
return auth;
}
вместо этого, просто используйте это
FirebaseAuth usuario = FirebaseAuth.getInstance();
, а затем используйте свой усуарио, чтобы получить то, что вам нужно
usuario.getCurrentUser().getUid(); //for example, getting the uid of the user logged in