displayName возвращает null при входе с использованием электронной почты и пароля - PullRequest
0 голосов
/ 01 августа 2020

У меня есть два варианта входа в систему:

  1. с использованием электронной почты и пароля
  2. с использованием входа в Google

Когда я вхожу в систему с помощью входа в систему метод его отображаемое имя, но не отображаемое имя при использовании электронной почты и пароля, user.displayName возвращает значение null при использовании 1-го варианта. У меня есть поставщик услуг для аутентификации, я также пробовал метод currentUser. Храню пользователей в firestore. Это то, что я получаю . Это моя коллекция пользователей

1 Ответ

1 голос
/ 01 августа 2020

Если пользователь зарегистрировался с использованием электронной почты и пароля, есть возможность обновить displayName и photoUrl пользователя.

// Suppose currentUser is the logged in FirebaseUser

currentUser.updateProfile(
  UserUpdateInfo(
    displayName: 'name',
    photoUrl: '...',
  ),
),

Если это никогда не было сделано, displayName и photoUrl вернет null

Поскольку у вас есть данные в коллекции users, вам нужно будет получить доступ к этим данным из этой document так же, как вы получите доступ к любому другому document в firestore.

Лучшим подходом было бы принять displayName во время регистрации, чтобы вы могли обновить displayName этого пользователя:

FirebaseAuth.instance.createUserWithEmailAndPassword(
  email: 'an email',
  password: 'a password',
).then((newUser) {
  newUser.updateProfile(
    UserUpdateInfo(
      displayName: 'name',
    ),
  );
});

Теперь вы можете получить доступ, используя currentUser.displayName напрямую.

...