阻止Firebase验证电话创建帐户

时间:2018-12-17 17:23:31

标签: firebase firebase-authentication flutter

我想将电话号码与以前创建的帐户关联; 但是当我验证电话号码时,我发现了两种情况:

  1. 他们向用户发送带有代码的短信,当用户输入代码时,我只是将手机保存在数据库中并结束。没问题。

  2. 我认为
  3. google自动验证电话,而不发送MSG,因为输入的号码== SIM卡号码。这里的问题是它自动登录并在Auth中创建新的Firebase用户,并且该用户自动注销当前帐户并登录新帐户(电话号码) 我想阻止它自动创建帐户。有什么办法吗?

代码:

Future<void> verifyPhone() async {
    final PhoneCodeAutoRetrievalTimeout autoRetrieve = (String verId) {
      //this.verificationId = verId;
    };

    final PhoneCodeSent smsCodeSent = (String verId, [int forceCodeResend]) {
      this.verificationId = verId;
      smsCodeDialog(context).then((value) {
        print('Signed in');
      });
    };

    final PhoneVerificationCompleted verifiedSuccess = (FirebaseUser user) {
      print('verified');
    };

    final PhoneVerificationFailed veriFailed = (AuthException exception) {
      print('${exception.message}');
    };
    print("\n\n ${this.phoneNo} \n\n");

    await FirebaseAuth.instance.verifyPhoneNumber(
      phoneNumber: "+2${this.phoneNo.toString()}",
      codeAutoRetrievalTimeout: autoRetrieve,
      codeSent: smsCodeSent,
      timeout: const Duration(seconds: 5),
      verificationCompleted: verifiedSuccess,
      verificationFailed: veriFailed,
    );
  }

1 个答案:

答案 0 :(得分:0)

更改verifySuccess函数以获取电话号码的参数,然后将电话号码保存到数据库中,而无需继续使用这些凭据实际登录用户。然后,当用户登录到您的应用程序时,只需检查数据库以查看电话号码字段是否存在。如果存在,则对其进行验证,如果不存在,则将用户转发回电话验证屏幕。如果您遵循此过程,请确保取出使用电话验证的凭据继续登录用户的所有代码。这样就不会创建另一个唯一ID。