首页 > 解决方案 > Firebase 电子邮件验证 Flutter

问题描述

我有这段代码要注册:

      Future<String> signUp({String email, String password}) async {
    try{
      await _firebaseAuth.createUserWithEmailAndPassword(email: email, password: password);

      return "Signed up";
    } on FirebaseAuthException catch(e){
      print("no se puede crear");
      return e.message;
    }
  }

我需要实现来自 firebase 的验证邮件,这已经被问了很多,我在研究时想出了这个,有些代码已被弃用,我很难找到指导:

    Future<String> signUp({String email, String password}) async {
    FirebaseUser user = await _firebaseAuth.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);
    }
  }
  }

但无法弄清楚如何实现它,因为它抛出:

不能将“UserCredential”类型的值分配给“FirebaseUser”类型的变量。

标签: flutterdartfirebase-authenticationcredentialsemail-validation

解决方案


createUserWithEmailAndPassword不返回 FirebaseUser 对象。正如您从链接的 API 文档中看到的那样,它产生了一个UserCrediental对象。这就是错误消息试图告诉您的内容 - 您不能将 UserCredential 分配给 FirebaseUser 类型的变量。

如果您想从 UserCredential 中获取 FirebaseUser 对象,您可以简单地使用它的user属性。

UserCredential credential = await _firebaseAuth.createUserWithEmailAndPassword(email: email, password: password);
FirebaseUser user = credential.user;

推荐阅读