使用 Flutter 的 Firebase 身份验证不起作用

Posted

技术标签:

【中文标题】使用 Flutter 的 Firebase 身份验证不起作用【英文标题】:Firebase Authentication with Flutter not working 【发布时间】:2021-09-07 13:52:18 【问题描述】:

我正在尝试创建一个注册页面,如果具有特定电子邮件 ID 的用户已经存在,该页面应该会给出错误消息。但它不起作用。

signUp() 
    if (formkey.currentState!.validate()) 
      Map<String, String> userDataMap = 
        "name": usernameC.text,
        "email": emailC.text
      ;

      setState(() 
        isLoading = true;
      );

      authMethods.signUp(emailC.text, passwordC.text).then((value) 
        databaseMethods.uploadUserData(userDataMap);
        Navigator.pushReplacement(
            context, MaterialPageRoute(builder: (context) => ChatRoom()));
      );
    
  

它从下面给出的 auth.dart 调用 signUp() 函数

 UserData? _userFromFirebase(User? user) 
    return user != null ? UserData(userid: user.uid) : null;
  

 Future signUp(String email, String pass) async 
    try 
      UserCredential result = await _auth.createUserWithEmailAndPassword(
          email: email, password: pass);
      User? user = result.user;
      return _userFromFirebase(user);
     catch (e) 
print(e
  

每次我使用相同的电子邮件注册时,它都不会出现任何错误。

【问题讨论】:

【参考方案1】:

如果您使用相同的电子邮件注册,您应该会收到以下消息: [firebase_auth/email-already-in-use] The email address is already in use by another account.

我使用print(e.hashCode),然后使用此哈希码显示错误消息。

【讨论】:

它不工作,我不知道为什么它没有给出任何错误。【参考方案2】:

好的,我尝试了这个方法,它成功了。刚刚添加了对“值”属性的空检查。

authMethods.signUp(emailC.text, passwordC.text).then((value)

它返回 null 而没有任何其他消息。这就是我看不到错误的原因。

【讨论】:

以上是关于使用 Flutter 的 Firebase 身份验证不起作用的主要内容,如果未能解决你的问题,请参考以下文章

用于 Flutter 桌面嵌入的 Firebase 身份验证插件

Flutter:使用谷歌身份验证在 Firebase 存储中实施任何身份验证失败

无法使用 Flutter 和 Firebase 设置 Facebook 身份验证

使用 Flutter 的电子邮件进行 Firebase 身份验证

在 Flutter 上使用电子邮件和密码进行 Firebase 身份验证的示例?

带有 WebView 的 Flutter 应用中的 Firebase 身份验证