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提取出来,再重新发送一条代码短信,当然,这要复杂得多,也要混乱得多。
2条答案
按热度按时间fdx2calv1#
可以通过使用相同的电话号码再次调用
verifyPhoneNumber
方法来取消正在进行的验证请求,但是将forceResendingToken
参数设置为空。这将取消先前的请求并允许开始新的请求。还可以使用
PhoneAuthProvider.getInstance()
方法获取对PhoneAuthProvider示例的引用,然后在该示例上调用verifyPhoneNumber
方法,而不是直接调用它。这允许多次调用verifyPhoneNumber
方法,而不取消先前的请求。验证请求的超时持续时间通常约为5分钟,因此,如果您希望允许用户在超时到期前请求新代码,请为他们提供一种方法来执行此操作,例如在应用程序中添加“重新发送代码”按钮。
总的来说,最好的设计方式是尽量减少取消正在进行的验证请求的需要,因为这可能会导致混乱的用户体验。相反,应该专注于为用户提供清晰的说明和选项,并考虑使用getInstance方法来避免不得不完全取消请求。
wpcxdonn2#
要在Firebase中取消正在进行的电话验证请求,您可以使用PhoneAuthProvider.ForceResendingToken类。该类表示可用于强制重新发送验证代码的令牌。
若要取消正在进行的电话验证请求,您可以使用PhoneAuthProvider.verifyPhoneNumber方法启动该请求,然后使用相同的phoneNumber和ForceResendingToken参数再次调用PhoneAuthProvider.verifyPhoneNumber方法。这将取消上一个请求并启动新的请求,从而允许您重新发送验证代码。
以下是如何在Firebase中取消正在进行的电话验证请求的示例: