【问题标题】:How to stop an ongoing phone authentication request with Firebase如何使用 Firebase 停止正在进行的电话身份验证请求
【发布时间】:2022-12-11 01:11:57
【问题描述】:

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

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

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提取它,然后重新发送一个代码短信。但是,当然,它要复杂得多和混乱得多。

【问题讨论】:

    标签: java android firebase


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我明白你在说什么。例如,如果我将这个返回按钮移除,然后用户不小心完全退出应用程序,我怎么知道他仍在电话验证过程中?
    猜你喜欢
    • 2018-07-03
    • 2018-10-15
    • 2019-12-27
    • 2020-02-21
    • 1970-01-01
    • 2020-11-08
    • 2021-11-30
    • 2020-03-24
    • 2021-07-13
    相关资源
    最近更新 更多