Повторно отправить подтверждение через Flutter для Firebase - PullRequest
1 голос
/ 28 мая 2020

У меня проблема с отправкой проверочной ссылки по электронной почте пользователю, когда он пытается зарегистрировать уже созданную учетную запись. Я кодирую Flutter с Firebase в качестве серверной базы данных. блок try-catch.

Мне не удается получить подтверждение электронной почты для повторной отправки во всплывающем окне, которое вызывает ResendVerifyEmail .

Пожалуйста, дайте мне знать о любых альтернативных способах отправки подтверждения по электронной почте из Firebase с Flutter или что с этим делать.

  void _showVerifyEmailDialog(BuildContext context, String email) {
final BaseAuth auth = AuthProvider.of(context).auth;
showDialog(
  context: context,
  builder: (BuildContext context) {
    // return object of type Dialog
    return AlertDialog(
      title: new Text("Account Already Exists"),
      content: new Text("Please verify account in the link sent to email"),
      actions: <Widget>[
        new FlatButton(
          child: new Text("Resend verification email"),
          onPressed: () {
            Navigator.of(context).pop();
            auth.resendVerifyEmail();   <- Called from this line in login.dart

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

final FirebaseUser user = await _firebaseAuth.currentUser();

1 Ответ

1 голос
/ 28 мая 2020

Похоже, вы добавляете ненужные элементы в функцию повторной отправки. Вот как я реализовал свой собственный:

  Future<void> sendEmailVerification() async {
    final FirebaseUser user = await _firebaseAuth.currentUser();
    user.sendEmailVerification();
  }

Просто вызовите его после регистрации пользователя следующим образом:

  await Auth().sendEmailVerification();
  await Auth().signOut();

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

  Future<bool> isEmailVerified() async {
    final FirebaseUser user = await _firebaseAuth.currentUser();
    return user.isEmailVerified == null ? false : user.isEmailVerified;
  }

Просто вызовите его, когда вы входите в систему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...