Как проверить электронную почту пользователя, используя Flutter и Firebase - PullRequest
0 голосов
/ 20 апреля 2020

Я следовал руководству на medium.com об этой конкретной теме c и создал класс для управления аутентификацией, но он выдает ошибку.

import 'package:firebase_auth/firebase_auth.dart';
import 'package:lindo_app/models.dart/user.dart';


class AuthService {

  final FirebaseAuth _auth = FirebaseAuth.instance;

//auth change user stream

  Stream<User> get user {
    return _auth.onAuthStateChanged.map(_userFromFirebaseUser);
  }

//create user object

  User _userFromFirebaseUser(FirebaseUser user) {
    return (user != null) ? User(uid: user.uid) : null;
  }

  //Sign In with Email and Pass
  Future signInWithEmailAndPassword(String email, String password) async {
    try {
      AuthResult result = await _auth.signInWithEmailAndPassword(email: email, password: password);
      FirebaseUser user = result.user;
      return _userFromFirebaseUser(user);
    }
    catch(e){
      return null;
    }
  }

  //sign out
  Future signOut() async {
    try{
      return await _auth.signOut();
    }
    catch(error){
      print(error.toString(),);
      return null;
    }
  }

  // sign up

  Future signUp(String email, String password) async {
      FirebaseUser user = await _auth.createUserWithEmailAndPassword(email: email, password: password);
     try {
        await user.sendEmailVerification();
        return user.uid;
     } catch (e) {
        print("An error occured while trying to send email verification");
        print(e.message);
     }
  }
}

Ошибка:

AuthResult can't be assigned to FirebaseUser on line 47

(последний метод для значения 'user' должен быть очищен). Заранее спасибо

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

Ошибка не требует объяснений, вы присваиваете возвращаемое значение createUserWithEmailAndPassword переменной FirebaseUser, а она возвращает AuthResult

исправление вашей проблемы:

Future signUp(String email, String password) async {
      AuthResult result = await _auth.createUserWithEmailAndPassword(email: email, password: password);
     FirebaseUser user = result.user;
     //do something with user
     try {
        await user.sendEmailVerification();
        return user.uid;
     } catch (e) {
        print("An error occured while trying to send email verification");
        print(e.message);
     }
  }
0 голосов
/ 20 апреля 2020

AuthResult не может быть назначен FirebaseUser в строке 47

Вы должны позвонить .user в конце этой строки

 FirebaseUser user = await _auth.createUserWithEmailAndPassword(email: email, password: password).user;

вместо

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