Flutter Firebase Authentication currentUser () возвращает ноль - PullRequest
0 голосов
/ 20 мая 2018

Это плагин Flutter Firebase Authentication.
Я пытаюсь отправить подтверждающее письмо после создания нового пользователя, но sendEmailVerification () внутренне использует currentUser ().Мне это кажется ошибкой, но на всякий случай я отправляю вопрос в stackoverflow.Ошибка одинакова на Android и IOS.

Первые две строки возвращают FirebaseUser.Третий возвращает ноль.В-четвертых, если третье прокомментировано, выдает нулевую ссылку.

Спасибо,
Борис

user = await _auth.createUserWithEmailAndPassword(email: email, password: password); 
// result is FirebaseUser
user = await _auth.signInWithEmailAndPassword(email: email, password: password);
// result is FirebaseUser    
user = await _auth.currentUser();
// result is null    
await user.sendEmailVerification();
//null reference, because it internally uses .currentUser()

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Вот что я нашел, и я не уверен, что это все-таки ошибка или нет, но есть способ заставить ее работать.FirebaseUser, возвращенный signInWithEmailAndPassword, на самом деле не аутентифицирован.Только пользователь, возвращенный потоком onAuthStateChanged, является.Итак, если вы вызываете user.sendEmailVerification () из контекста onAuthStateChanged, то все в порядке.

Это будет работать:

_firebaseUserChanged = _auth.onAuthStateChanged.listen((FirebaseUser user) {
    if (user != null && !user.isEmailVerified) {
        user.sendEmailVerification(); 
   }
});

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

0 голосов
/ 21 мая 2018

Глядя на код firebase_auth , я вижу, что signInWithEmailAndPassword создает экземпляр и возвращает пользователя.Это, вероятно, пользователь, которому нужно позвонить sendEmailVerification с.

final user = await _auth.signInWithEmailAndPassword(email: email, password: password);
await user.sendEmailVerification();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...