FirebaseNetworkException:网络错误(例如超时、连接中断或主机无法访问)

Raf*_*ima 6 android firebase firebase-authentication

  • 安卓工作室版本:3.6.3
  • Firebase 组件:身份验证
  • 组件版本:19.4.0

我有一个正在生产的 android 应用程序,在 google play 上的下载量超过 500k,一些用户(我不知道为什么)在登录时出现这个错误......

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)
Run Code Online (Sandbox Code Playgroud)

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

我发现了这个老问题: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
        });
    });
Run Code Online (Sandbox Code Playgroud)

小智 -1

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