Flutter:使用从 Firebase 身份验证创建的帐户在 Firestore 中创建用户

Posted

技术标签:

【中文标题】Flutter:使用从 Firebase 身份验证创建的帐户在 Firestore 中创建用户【英文标题】:Flutter: Creating a user in Firestore using the account created from Firebase Authentication 【发布时间】:2020-06-10 21:41:18 【问题描述】:

我正在创建一个使用 dart 语言和 Firebase 进行身份验证的颤振应用程序。

我的用户注册代码是

  Future<void> signUp() async 
if(_formKey.currentState.validate())
  _formKey.currentState.save();
  try
    AuthResult user = await FirebaseAuth.instance.createUserWithEmailAndPassword(email: _email, password: _password);

    Navigator.of(context).pop();
    Navigator.pushReplacement(context,MaterialPageRoute(builder: (context)=> LoginPage()));
  catch(e)
    print(e.message);
  

有谁知道我将如何使用新创建的用户凭据在数据库中为用户创建一个条目?

我已经使用我手动输入的虚拟用户设置了数据库,但希望能够从注册用户创建条目。

【问题讨论】:

该文档包含有关如何将文档添加到 Firestore 的说明。我会从那里开始。 firebase.google.com/docs/firestore/manage-data/add-data 你要在哪个数据库中添加什么信息? 【参考方案1】:

您可以从 AuthResult 获取 uid 以在 Firestore 中创建文档。 setData 更新文档,或者在这种情况下,创建一个,因为它不存在。确保安装 cloud_firestore_package。

UserCredential result = await FirebaseAuth.instance.createUserWithEmailAndPassword(email: _email, password: _password);
User user = result.user
await FirebaseFirestore.instance.collection('users')
      .doc(user.uid).set( 'firstName': _firstName)

【讨论】:

感谢您提供非常有帮助的答案!对于其他阅读本文的人,我添加了软件包并安装了它。然后需要启用多索引link 您可以使用这行代码将多个值添加到一个文档中,如下代码:codeawait Firestore.instance.collection('users').document(user.uid)。 setData( 'firstName': _firstName, 'lastName': _lastName, 'userName': _userName) result.user 返回错误:LateInitializationError: Field 'user;尚未初始化。【参考方案2】:

首先你需要连接到数据库。为此,您必须将cloud_firestore package 添加到您的项目中。

在同一页面上,您可能会发现 very nice example 如何在 Flutter 中进行操作。

如果您在同一包页面上寻求更多详细信息,您可以找到API reference。

只要研究一下这个包,一切都应该在那里。

我希望它会有所帮助!祝你好运!

【讨论】:

以上是关于Flutter:使用从 Firebase 身份验证创建的帐户在 Firestore 中创建用户的主要内容,如果未能解决你的问题,请参考以下文章

从 Flutter 为 Firebase 身份验证设置自定义声明

请求的身份验证范围不足 - 在 Flutter 中使用 Firebase 从 Google 登录获取生日时出错

我是 Flutter Web 的新手,如何使用 Firebase 电话身份验证对用户进行身份验证,有没有办法让用户保持登录状态?

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

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

Flutter:Firebase身份验证无需登录即可创建用户