Вход в систему без пароля при входе в Flutter не вызывает изменения состояния авторизации - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь ввести логин без пароля в веб-приложении. Я использовал виджет StreamBuilder для мониторинга состояния авторизации.

          child: StreamBuilder<FirebaseUser>(
            stream: FirebaseAuth.instance.onAuthStateChanged,
            builder: (context, snapshot) {
              print("AuthStateChanged");
              print(snapshot.connectionState);
              if (snapshot.connectionState == ConnectionState.active) {
                print("Connection Active");
                FirebaseUser user = snapshot.data;
                if (user == null) {
                  return LoginPage();
                }
                return LoggedIn();
              } else {
                print("Connection Inactive"); //Connection Inactive, show error dialog
                return Text("***");
              }
            },
          ),

Я создал динамическую c ссылку в firebase, https://mypwakk.page.link/6SuK, которая указывает на html, запрашивающую у пользователя go вернуться к приложению.

<!DOCTYPE html>
<html>
  <head>
    <title>Sign in via email</title>
  </head>
  <body>
      <h1>You now have signed in.</h1>
      <p>Go back to the same device you opened the app from and continue using the app as an authenticated user.</p>
  </body>
</html>

Затем ссылка для входа была отправлена ​​с помощью FirebaseAuth.instance.signInWithEmailAndLink()

Когда была получена ссылка в электронном письме, я щелкнул по ней, и это привело меня к html стр. В этот момент я ожидал, что в моем StreamBuilder будет изменено состояние авторизации и отладочное сообщение печати обработчика. Но я не вижу ничего напечатанного на консоли.

Я что-то упустил? Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 20 марта 2020

После некоторых экспериментов с динамической c ссылкой я решил эту проблему.

Что я сделал не так, так это

  • Создал страницу html для обработки щелчка по ссылке.
  • Создан динамический c домен ссылки.
  • Создан динамический c ссылка, который указывает на html URL страницы.
  • Предоставлен динамический c ссылка в качестве параметра url на actionCodeSettings, когда я отправил ссылку на электронную почту.

Что я должен был сделать,

  • Создать страницу html для обработки клика по ссылке. Добавьте обработчик java -script для выполнения проверки клика и входа в систему.
  • Создание динамического c домена ссылки.
  • Укажите URL-адрес html в качестве параметра url и динамический c домен ссылки в качестве параметра dynamicLinkDomain для actionCodeSettings когда я отправил ссылку на электронную почту.

Проверьте, https://firebase.google.com/docs/auth/web/email-link-auth#completing_sign -in_in_a_web_page . Документация действительно определяет процесс, но пришедший из флаттера, переводить его в мишень флаттера мне было несколько неясно. Надеемся, что в будущем будет доступен некоторый понятный пример кода для веб-цели флаттера.

...