【问题标题】:Cloud Firestore Document Check after Phone Authentication电话验证后的 Cloud Firestore 文档检查
【发布时间】:2021-05-30 00:15:02
【问题描述】:

我会尽量解释清楚

我想在验证完成后添加一个检查。因为检查应该是这样的:检查是否有一个文档 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;
      },
    );
  }

请帮助我如何添加此支票。

【问题讨论】:

  • 但是在检查是否有文档之前,您已经在更新文档了。
  • @Apps247 是的,所以我需要添加该检查,这就是我需要帮助的地方。因为没有那个检查用户文档总是在更新我不想要的。如果具有用户 uid 的用户文档不存在,我希望它被更新,否则只需返回主屏幕,所以你
  • 是的,但是您的 updateUserData 在您的 // TODO 之前

标签: android ios firebase flutter google-cloud-firestore


【解决方案1】:

我从this Stack Overflow Question这里复制并改编了这段代码

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

【讨论】:

  • 非常感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 2021-04-24
  • 2018-04-29
  • 2018-08-18
  • 1970-01-01
  • 2019-01-25
  • 2018-08-28
  • 2018-05-08
  • 2021-05-11
相关资源
最近更新 更多