[英]How to stop an ongoing phone authentication request with Firebase
我已将手机身份验证添加到我的注册过程中,在发送代码活动中 - 它发送短信代码以确认电话身份验证过程。 然后,我还添加了一个“返回”/“返回”按钮,使用户返回到主要活动。
如果我发出以下请求,向用户发送短信代码到他的手机:
PhoneAuthProvider.verifyPhoneNumber(options);
在定义的超时持续时间结束之前,我将无法发出另一个请求。 因此,我想到了一种简单而不麻烦的方法,那就是取消正在进行的请求,但不幸的是找不到如何这样做,即使现在可能的话。 我在这里也看到了未答复的帖子: Android Firebase OTP 验证:有没有办法在实际超时之前以编程方式取消 OTP 代码请求?
无法使用这个,即使它是我正在寻找的,但它没有相关的答案。
我也想到了第二种方法,就是保存当前活动的电话号码,然后用onRestoreInstanceState和onSaveInstanceState提取它,然后重新发送一个代码短信。 但是,当然,它要复杂得多和混乱得多。
可以通过使用相同的电话号码再次调用verifyPhoneNumber
方法来取消正在进行的验证请求,但将forceResendingToken
参数设置为 null。这将取消之前的请求并允许开始新的请求。
也可以使用PhoneAuthProvider.getInstance()
方法获取对 PhoneAuthProvider 实例的引用,然后对该实例调用verifyPhoneNumber
方法,而不是直接调用它。 这允许在不取消先前请求的情况下多次调用verifyPhoneNumber
方法。
验证请求的超时持续时间通常为 5 分钟左右,因此如果您希望允许用户在超时到期之前请求新代码,请为他们提供一种方法,例如通过添加“重新发送代码”按钮到应用程序。
总的来说,最好以尽量减少取消正在进行的验证请求的方式来设计应用程序,因为这会导致混乱的用户体验。 相反,专注于为用户提供清晰的说明和选项,并考虑使用 getInstance 方法来避免不得不完全取消请求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.