首页 > 解决方案 > 电话验证后的 Cloud Firestore 文档检查

问题描述

我会尽量解释清楚

我想在验证完成时添加一个检查。因为检查应该是这样的:检查是否有一个文档 ID 为已验证的用户 UID 的文档。如果它在那里,然后去家里。如果不存在,则使用我已经创建的 updateData 类创建一个文档,然后转到主页

这是我的电话身份验证代码

  Future phoneAuthentication(
    String fullName,
    String phoneNumber,
    String phoneIsoCode,
    String nonInternationalNumber,
    String profilePicture,
    String verificationCode,
    BuildContext context,
  ) async {
    _auth.verifyPhoneNumber(
      phoneNumber: phoneNumber,
      timeout: Duration(seconds: 0),
      verificationCompleted: (AuthCredential authCredential) async {
        _auth.signInWithCredential(authCredential).then(
          (UserCredential result) async {
            User user = result.user;
            await DatabaseService(uid: user.uid).updateUserData(
              fullName,
              phoneNumber,
              phoneIsoCode,
              nonInternationalNumber,
              profilePicture,
            );
            Navigator.pushAndRemoveUntil(
              context,
              MaterialPageRoute(
                builder: (context) => CustomerDashboard(),
              ),
              (route) => false,
            );
          },
        ).catchError(
          (e) {
            return null;
          },
        );
      },
      verificationFailed: (FirebaseAuthException exception) {
        return "Error";
      },
      codeSent: (String verificationId, [int forceResendingToken]) {
        var _credential = PhoneAuthProvider.credential(
          verificationId: verificationId,
          smsCode: verificationCode,
        );
        _auth.signInWithCredential(_credential).then(
          (UserCredential result) async {
            User user = result.user;
            await DatabaseService(uid: user.uid).updateUserData(
              fullName,
              phoneNumber,
              phoneIsoCode,
              nonInternationalNumber,
              profilePicture,
            );
            Navigator.pushAndRemoveUntil(
              context,
              MaterialPageRoute(
                builder: (context) => CustomerDashboard(),
              ),
              (route) => false,
            );
          },
        ).catchError(
          (e) {},
        );
      },
      codeAutoRetrievalTimeout: (String verificationId) {
        verificationId = verificationId;
      },
    );
  }

请帮助我应该如何添加此检查。

标签: androidiosfirebasefluttergoogle-cloud-firestore

解决方案


我从这个 Stack Overflow Question复制并修改了这段代码

DocumentSnapshot ds = await YOUR_DB_REFERENCE_IDENTIFIER.collection("YOUR_COLLECTION_NAME").document(user.uid).get();
return ds.exists;

推荐阅读