【问题标题】:adding users to firebase cloud firestore将用户添加到 Firebase Cloud Firestore
【发布时间】:2022-11-11 21:50:09
【问题描述】:

尝试使用 firebase sdk 创建用户,firebase authetication 已创建用户,但新创建的用户未链接到我的云 Firestore,我找不到错误来自哪里我等于添加网络访问和互联网访问到我所有的清单文件

 void _submitAuthForm(
      String email, String password, String username, bool isLogin) async {
    UserCredential authResult;
    try {
      setState(() {
        _isLoading = true;
      });
      if (isLogin) {
        authResult = await _auth.signInWithEmailAndPassword(
            email: email, password: password);
      } else {
        authResult = await _auth
            .createUserWithEmailAndPassword(email: email, password: password)
            .then((value) async {
          await FirebaseFirestore.instance
              .collection('accounts')
              .doc(value.user?.uid)
              .set({'email': email, 'username': username});
        }) as UserCredential;

        // await FirebaseFirestore.instance
        //     .collection('accounts')
        //     .doc(authResult.user?.uid)
        //     .set({'email': email, 'username': username});
      }
    } on FirebaseAuthException catch (err) {
      var message = 'An error occured, please check your credential';
      if (err.message != null) {
        message = err.message!;
      }
      ScaffoldMessenger.of(context).showSnackBar(SnackBar(
        content: Text(message),
        backgroundColor: Theme.of(context).errorColor,
      ));
      setState(() {
        _isLoading = false;
      });
    } catch (err) {
      print(err);
      setState(() {
        _isLoading = false;
      });
    }
  }

【问题讨论】:

    标签: flutter


    【解决方案1】:

    您必须访问 FireStore 数据库并创建一个名为“用户”的集合。您还必须获取 cloud_firestore 包。从这里,您可以进行某种回调以在集合中创建用户文档。例如,如果您想让每个用户都有一个唯一的 id 并将他们的显示名称(如果他们注册了的话)保存在 doc 中,您可以在用户注册成功后编写并调用此函数。

    Future<void> addUserDataToFireStore() async {
      CollectionReference users = FirebaseFirestore.instance.collection('users');
      String uid = FirebaseAuth.instance.currentUser!.uid;
      final currentUser = FirebaseAuth.instance.currentUser;
    
      if (uid != null) {
        users.doc(uid).set({
          'userId': uid,
          'email': currentUser!.email,
          'username': currentUser!.username,
        });
      } else {
        return;
      }
    }
    

    让我知道这是否有帮助或需要其他任何东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-02
      • 2018-07-05
      • 2018-05-10
      • 2018-04-17
      • 1970-01-01
      • 2021-12-30
      • 2020-01-27
      • 1970-01-01
      相关资源
      最近更新 更多