【发布时间】: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
});
});
【问题讨论】:
-
您能否确认他们没有使用 VPN 等代理应用程序,或使用网络背后的代理?和it can also happen when google play services are not running.
标签: android firebase firebase-authentication