Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase未向设备中的电话号码发送OTP_Firebase_Flutter_Dart_Firebase Authentication_One Time Password - Fatal编程技术网

Firebase未向设备中的电话号码发送OTP

Firebase未向设备中的电话号码发送OTP,firebase,flutter,dart,firebase-authentication,one-time-password,Firebase,Flutter,Dart,Firebase Authentication,One Time Password,我已经在我的颤振应用程序中实现了firebase otp 当我在我的设备上安装应用程序并在该设备上请求相同的号码时,它不会向我发送消息。但当我更改号码时,它会发送消息 因此,我改变了设备,并试图发送以前的号码,它成功地发送了消息。然后我在第二台设备上使用了这个号码,但它没有发送信息 *当我在设备上使用相同的号码时,它不会发送OTP 这是发送otp的代码 Future<void> verifyPhone() async { final PhoneCodeAutoRetrie

我已经在我的颤振应用程序中实现了firebase otp

当我在我的设备上安装应用程序并在该设备上请求相同的号码时,它不会向我发送消息。但当我更改号码时,它会发送消息

因此,我改变了设备,并试图发送以前的号码,它成功地发送了消息。然后我在第二台设备上使用了这个号码,但它没有发送信息

*当我在设备上使用相同的号码时,它不会发送OTP

这是发送otp的代码

  Future<void> verifyPhone() async {
    final PhoneCodeAutoRetrievalTimeout autoRetrieve = (String verID) {
      this.verificationId = verID;
    };
    final PhoneCodeSent smsCodeSent = (String verId, [int forceCodeResend]) {
      this.verificationId = verId;
    };
    final PhoneVerificationCompleted verifiedSuccess =
        (AuthCredential phoneAuthCredential) {
      print('verified');
    };
    final PhoneVerificationFailed verifyFailed = (AuthException exception) {
      print('${exception.message}');
    };

    await FirebaseAuth.instance.verifyPhoneNumber(
        phoneNumber: widget.phone,
        timeout: const Duration(seconds: 5),
        verificationCompleted: verifiedSuccess,
        verificationFailed: verifyFailed,
        codeSent: smsCodeSent,
        codeAutoRetrievalTimeout: autoRetrieve);

    log("OTP sent");
  }

这里怎么了?我如何解决这个问题并获得设备中相同号码的otp。

事实上,我相信这是预期的,也是预期的用途。或者靠近它,就好像Firebase可以通过推送通知确认手机身份一样,它甚至不发送文本,因为已经验证过了。通常只有在手机验证一次后才会发生。但是,如果您将其发送到设备所连接的电话号码以外的电话号码,则它无法使用系统中以前的verificationID


因此,我建议检查代码的哪些部分起作用,哪些部分不起作用。检查代码和授权是否失败,或者是否将继续执行完全授权的程序的下一部分。在那里添加一些打印语句以确保。但我很确定这应该是它的工作方式。

您在日志中遇到了什么异常?
signIn() async{
    final AuthCredential credential = PhoneAuthProvider.getCredential(
      verificationId: verificationId,
      smsCode: enteredOtp,
    );
    await FirebaseAuth.instance.signInWithCredential(credential).then((user) {
      //SOME CODE HERE
    }).catchError((e) {
      showAlert(
        context: context,
        title: "Empty or Invalid OTP",
      );
      log("Invalid OTP");
    });
  }