颤振 | Firebase 用户身份验证和配置文件创建

Posted

技术标签:

【中文标题】颤振 | Firebase 用户身份验证和配置文件创建【英文标题】:Flutter | Firebase User Authentication & Profile creation 【发布时间】:2020-10-17 08:58:37 【问题描述】:

我是 Flutter/Firebase 的新手,我想编写一个用户可以登录/注册的应用程序,然后他需要使用他的姓名、年龄等信息创建个人资料......并且只有在他创建了自己的profile,他应该能够继续并查看应用程序的“主要部分”。

我已经使用有效的登录/注册页面实现了 Firebase 身份验证,但我现在的问题是,如何最有效地创建个人资料。

目前我在这里自己创建了这个方法:

  Future checkUserProfile() async

// get snapshot from document
final snapShot = await Firestore.instance.collection('profiles').document(uid).get();

if(snapShot == null || !snapShot.exists)

  User.gotProfile = false;

 else 

  User.gotProfile = true;


此方法正在检查具有 Firebase Auth 用户 UID 的用户配置文件是否已经存在,如果不存在,用户将被发送到“ProfilePage”,FutureBuilder 执行上述方法,如果它已经存在,他将看到应用程序的主要部分。

正如我已经说过的,我自己尝试过,我想问一下这是否已经是一个很好的实现,或者是否有更简单更好的方法来做到这一点?

【问题讨论】:

【参考方案1】:

是的,这是一个很好的实现。在我的应用程序中,我有像您一样的检查用户方法。以下方法是一个示例。当用户未注册时,他转发到 RegisterPage 否则他转发到 MainPage。

checkUserAlreadyExists(FirebaseUser user) async 
    final userData = await Firestore.instance.collection('users').document(user.uid).get();
    if (userData == null || !userData.exists) 
      setState(() 
        Navigator.pushAndRemoveUntil(context,
            MaterialPageRoute(builder: (BuildContext context) => RegisterPage()), ModalRoute.withName('/'));
      );
     else 
      setState(() 
        Navigator.pushAndRemoveUntil(context,
            MaterialPageRoute(builder: (BuildContext context) => MainPage()), ModalRoute.withName('/'));
      );
    
  

【讨论】:

啊,好吧,你已经在函数中做了。我为它创建了一个额外的小部件,但它仍然应该是相同的。非常感谢您的分享! 是的,完全没问题,欢迎您:) 请您接受答案,或者我可以帮助您解决其他问题吗?

以上是关于颤振 | Firebase 用户身份验证和配置文件创建的主要内容,如果未能解决你的问题,请参考以下文章

在颤振应用程序的firebase身份验证中合并两个uid

用于电子邮件链接身份验证的颤振 ERROR_INVALID_ACTION_CODE 中的 firebase 身份验证

如何在颤振应用程序中使用相同的 Firebase 匿名用户

Firebase 电话身份验证验证 ID 从未设置。 (颤振iOS)

颤振中的firebase电话身份验证问题

Firebase身份验证未经许可更新用户配置文件