【问题标题】:FirebaseNetworkException: A network error (such as timeout, interrupted connection or unreachable host)FirebaseNetworkException:网络错误(如超时、连接中断或无法访问主机)
【发布时间】:2021-01-03 08:28:33
【问题描述】:
  • Android Studio 版本:3.6.3
  • Firebase 组件:身份验证
  • 组件版本:19.4.0

我有一个正在生产中的 android 应用程序,在 google play 上的下载量超过 50 万,一些用户(我不知道具体原因)在登录时出现此错误...

com.google.firebase.FirebaseNetworkException: A network error (such as timeout, interrupted connection or unreachable host)
       at com.tomatedigital.giveawaymaster.task.LoginTask.lambda$firebaseAuth$1(LoginTask.java:249)
       at com.tomatedigital.giveawaymaster.task.-$$Lambda$LoginTask$p6eSSF8vZ2BATwhlFttcJl8qT-w.onComplete(-.java)
       at com.google.android.gms.tasks.zzi.run(zzi.java:4)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
       at java.lang.Thread.run(Thread.java:818)

这些用户、不同的安卓版本、不同的手机型号之间没有简单的关联......

我发现了这个老问题:https://github.com/firebase/firebase-android-sdk/issues/384 但似乎 Firebase 团队中的某个人只是将它隐藏在地毯下而不是解决它(在那里很常见)

该错误发生在生产中的真实设备中, 我在应用程序中嵌入了一个小聊天,一些有问题的用户来支持,我要求重新安装应用程序,但他们一直出错......这也不是互联网连接问题,因为人们在在线聊天中与我交谈并同时遇到问题

crashlytics 显示它在 1% 的会话中发生...

相关代码:

FirebaseAuth.getInstance().signInWithCustomToken(token).addOnCompleteListener(AsyncTask.THREAD_POOL_EXECUTOR, task -> {
                if (task.isSuccessful()) {
                    FirebaseCrashlytics.getInstance().log("new firebase token successfully authenticated");
                } else {
                    App.shouldNeverHappen(new RuntimeException(task.getException().getMessage() + " data: " + sb.toString()));
                    this.exception = task.getException();
                }

});

//token is generated in my Firebase cloud functions as
auth.createCustomToken(uid).then(function(customToken) {
        res.status(200).send(customToken);
    }).catch(function(error) {
        console.error("Error creating custom token:" + JSON.stringify(error));
        res.status(200).json({
            e: error
        });
    });

【问题讨论】:

标签: android firebase firebase-authentication


【解决方案1】:

这个问题可能有几个原因

  1. 缺少权限
  2. 播放服务未运行或冻结或过时(例如在华为或小米设备上)

在启动应用程序之前查看正在运行的服务,如果服务被冻结然后解冻它们,如果它们已过时,则更新它们并在重启后再次运行应用程序

  1. 日期和时间不正确

如果设备的日期不正确也可能发生,如果日期不正确,请更正它

  1. 也会出现在移动数据上,因为有时默认数据配置有代理,尝试在 wifi 上运行以诊断错误

【讨论】:

  • 个人经验,移动数据问题,权限不足,但没有确凿的证据,因为我无法模仿错误,阅读 Play services not available or not running 后可以找到堆栈溢出问题,还阅读了由于时间和日期不准确而发生的错误,“根据stackoverflow上的解决方案”
  • 老实说,这些是人们崩溃的原因,但没有人知道真正的原因是什么
【解决方案2】:

转到项目>> andriod>>右键单击并在目录中打开新终端 运行命令“gradlew signingReport”并复制 SHA-1 密钥。现在打开 Firebase 控制台 >> 项目设置 >> 添加指纹 在此处粘贴 SHA-1 密钥 int。

【讨论】:

    猜你喜欢
    • 2017-02-24
    • 2020-01-14
    • 2021-08-28
    • 2020-04-13
    • 1970-01-01
    • 2018-01-26
    • 2019-10-04
    • 1970-01-01
    • 2019-07-25
    相关资源
    最近更新 更多