Android Studio 如何使用Firebase停止正在进行的电话身份验证请求

nfzehxib  于 2022-12-04  发布在  Android
关注(0)|答案(2)|浏览(150)

bounty将在6天后过期。回答此问题可获得+100的声望奖励。ATB正在寻找来自知名来源的答案:此帖子尚未有人回复,仍在寻找答案。

我在注册过程中添加了一个发送代码的活动-发送短信代码来确认手机验证过程。然后,我还添加了一个“返回”/“返回”按钮,将用户移回主活动。
如果我提出以下请求,向用户发送一个短信代码到他的手机:

PhoneAuthProvider.verifyPhoneNumber(options);

在超时时间结束之前,我无法再发出请求。因此,我想到了一个简单而又不混乱的方法,那就是取消正在进行的请求,但不幸的是,我找不到如何做到这一点,如果现在可能的话。我也在这里看到了未回复的帖子:Android Firebase OTP auth: Is there a way to cancel OTP code request programatically before the actual timeout?
不能与此工作,即使它是我正在寻找的,但它没有相关的答案。

  • 注意:我是用Java而不是Kotlin编写项目的。

我也想过第二种方法,就是保存当前活动的电话号码,然后用onRestoreInstanceState和onSaveInstanceState提取出来,再重新发送一条代码短信,当然,这要复杂得多,也要混乱得多。

fdx2calv

fdx2calv1#

可以通过使用相同的电话号码再次调用verifyPhoneNumber方法来取消正在进行的验证请求,但是将forceResendingToken参数设置为空。这将取消先前的请求并允许开始新的请求。
还可以使用PhoneAuthProvider.getInstance()方法获取对PhoneAuthProvider示例的引用,然后在该示例上调用verifyPhoneNumber方法,而不是直接调用它。这允许多次调用verifyPhoneNumber方法,而不取消先前的请求。
验证请求的超时持续时间通常约为5分钟,因此,如果您希望允许用户在超时到期前请求新代码,请为他们提供一种方法来执行此操作,例如在应用程序中添加“重新发送代码”按钮。
总的来说,最好的设计方式是尽量减少取消正在进行的验证请求的需要,因为这可能会导致混乱的用户体验。相反,应该专注于为用户提供清晰的说明和选项,并考虑使用getInstance方法来避免不得不完全取消请求。

wpcxdonn

wpcxdonn2#

要在Firebase中取消正在进行的电话验证请求,您可以使用PhoneAuthProvider.ForceResendingToken类。该类表示可用于强制重新发送验证代码的令牌。
若要取消正在进行的电话验证请求,您可以使用PhoneAuthProvider.verifyPhoneNumber方法启动该请求,然后使用相同的phoneNumberForceResendingToken参数再次调用PhoneAuthProvider.verifyPhoneNumber方法。这将取消上一个请求并启动新的请求,从而允许您重新发送验证代码。
以下是如何在Firebase中取消正在进行的电话验证请求的示例:

// Initiate the phone verification request
PhoneAuthProvider.verifyPhoneNumber(
  phoneNumber,
  timeoutDuration,
  activity,
  new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
    // Handle the verification state change events
    @Override
    public void onCodeSent(String verificationId, PhoneAuthProvider.ForceResendingToken token) {
      // Save the verification ID and token
      this.verificationId = verificationId;
      this.token = token;
    }
    // ...
  }
);

// Cancel the ongoing phone verification request
PhoneAuthProvider.verifyPhoneNumber(
  phoneNumber,
  timeoutDuration,
  activity,
  new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
    // Handle the verification state change events
    @Override
    public void onCodeSent(String verificationId, PhoneAuthProvider.ForceResendingToken token) {
      // Save the verification ID and token
      this.verificationId = verificationId;
      this.token = token;
    }
    // ...
  },
  token //

相关问题