firebase 身份验证超时

Posted

技术标签:

【中文标题】firebase 身份验证超时【英文标题】:firebase authentication timeout 【发布时间】:2017-09-11 19:23:10 【问题描述】:

我正在使用 Firebase 开发 android 应用。如果设备具有良好的互联网连接,则使用电子邮件和密码的登录过程可以正常工作,但是当我在信号不良或连接缓慢的地方进行测试时,该过程会等待很多时间。问题是:是否存在某种方式来为 Firebase 身份验证设置超时?延迟不利于用户体验。我通过单击登录按钮事件时发布的 Asynctask 解决了这个问题,此 Asynctask 等待 8 秒并向用户显示警告消息:连接速度慢,您可以等待或退出并稍后尝试,但我认为这是最好的方法正在超时。

【问题讨论】:

【参考方案1】:

当然 com.google.android.gms.tasks 包在未来不应该被 google 混淆和详细记录。我通过使用实用方法'await'在当前线程上同步等待它来运行我的任务,从而解决了同样的问题:

import com.google.android.gms.tasks.Tasks;

private String requestToken(boolean refresh) 
    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    Task<GetTokenResult> task = user.getIdToken(refresh); 
    return Tasks.await(task, 10, TimeUnit.SECONDS);

如果网络连接不好,await方法会在指定超时后抛出java.util.concurrent.TimeoutException

【讨论】:

以上是关于firebase 身份验证超时的主要内容,如果未能解决你的问题,请参考以下文章

如何针对 Firebase 验证身份验证令牌?

使用 Firebase 身份验证进行身份验证后检索 Google 访问令牌

使用firebase电话身份验证验证失败

Firebase 身份验证错误:未定义名称“身份验证”

LDAP 身份验证超时

.onAuthStateChanged 方法是不是计入 Firebase 身份验证验证?