FirebaseUser isEmailVerified всегда возвращает false даже после проверки электронной почты - PullRequest
1 голос
/ 05 августа 2020

У меня есть класс stati c AuthProvider, который централизует всю аутентификацию.

У меня есть следующий регистрационный код.

  AuthResult newUser = await auth.createUserWithEmailAndPassword(
      email: email, password: password);
  if (newUser == null) {
    print(
        'AuthProvider: empty user is returned from createUserWithEmailAndPassword');
    return false;
  }
  await newUser.user.sendEmailVerification();
  return true;

После регистрации в приложении я получил подтверждение электронное письмо, поэтому я нажал на него. Когда я пытаюсь войти в систему в следующий раз, isEmailVerified возвращает false. После некоторого исследования я думаю, что я должен перезагрузить объект пользователя следующим образом:

FirebaseUser user = await auth.currentUser();
await user.reload();
user = await auth.currentUser();

print('${user.isEmailVerified}');

К сожалению, isEmailVerified по-прежнему возвращает false. Кто-нибудь знает, почему это происходит?

Ответы [ 2 ]

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

isEmailVerified не обновляется до тех пор, пока в следующий раз не будет сгенерирован токен идентификатора для пользователя.

У вас есть несколько вариантов, sh это:

  1. Идентификационный токен автоматически обновляется каждые 55 минут, поэтому вы можете подождать, пока он обновится. sh.
  2. Вы можете выйти из системы и попросить его снова войти в систему, что также сгенерировать новый токен идентификатора с обновленным значением isEmailVerified.
  3. Вы можете вызвать getIdToken(true) для пользователя, что заставит его обновить sh токен идентификатора и таким образом получить обновлено значение isEmailVerified.
0 голосов
/ 05 августа 2020

firebase теряет всю сохраненную информацию после закрытия приложения.

если вам нужна функция автоматического входа,

вы используете плагин flutter shared_preferences

url link: https://pub.dev/packages/shared_preferences

сохранить электронную почту и пароль (необходимо зашифровать) и

при запуске данных загрузки приложения

  await _auth
        .signInWithEmailAndPassword(
      email: saveData,
      password: pwData,
    )

и функция user.isEmailVerified возвращает true

...