繁体   English   中英

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

[英]How to stop an ongoing phone authentication request with Firebase

我已将手机身份验证添加到我的注册过程中,在发送代码活动中 - 它发送短信代码以确认电话身份验证过程。 然后,我还添加了一个“返回”/“返回”按钮,使用户返回到主要活动。

如果我发出以下请求,向用户发送短信代码到他的手机:

PhoneAuthProvider.verifyPhoneNumber(options);

在定义的超时持续时间结束之前,我将无法发出另一个请求。 因此,我想到了一种简单而不麻烦的方法,那就是取消正在进行的请求,但不幸的是找不到如何这样做,即使现在可能的话。 我在这里也看到了未答复的帖子: Android Firebase OTP 验证:有没有办法在实际超时之前以编程方式取消 OTP 代码请求?

无法使用这个,即使它是我正在寻找的,但它没有相关的答案。

  • 注意:我正在使用 Java 而不是 Kotlin 对我的项目进行编程。

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

可以通过使用相同的电话号码再次调用verifyPhoneNumber方法来取消正在进行的验证请求,但将forceResendingToken参数设置为 null。这将取消之前的请求并允许开始新的请求。

也可以使用PhoneAuthProvider.getInstance()方法获取对 PhoneAuthProvider 实例的引用,然后对该实例调用verifyPhoneNumber方法,而不是直接调用它。 这允许在不取消先前请求的情况下多次调用verifyPhoneNumber方法。

验证请求的超时持续时间通常为 5 分钟左右,因此如果您希望允许用户在超时到期之前请求新代码,请为他们提供一种方法,例如通过添加“重新发送代码”按钮到应用程序。

总的来说,最好以尽量减少取消正在进行的验证请求的方式来设计应用程序,因为这会导致混乱的用户体验。 相反,专注于为用户提供清晰的说明和选项,并考虑使用 getInstance 方法来避免不得不完全取消请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM