繁体   English   中英

java.io.IOException:AUTHENTICATION_FAILED 在 Android Firebase(和 SERVICE_NOT_AVAILABLE)

[英]java.io.IOException: AUTHENTICATION_FAILED in Android Firebase (and SERVICE_NOT_AVAILABLE)

在获取 firebase 令牌时,我在某些设备上遇到以下错误:

Fatal Exception: d.b.a.b.g.f
java.io.IOException: AUTHENTICATION_FAILED
com.google.android.gms.tasks.zzu.getResult (zzu.java:15)
MainActivity$3.onComplete (MainActivity.java:387)

Caused by java.io.IOException
    AUTHENTICATION_FAILED
    com.google.firebase.iid.zzu.then (zzu.java:16)
    com.google.android.gms.tasks.zzd.run (zzd.java:5)
    java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1162)
    java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
    com.google.android.gms.common.util.concurrent.zza.run (zza.java:6)
    java.lang.Thread.run (Thread.java:784)

来自开发者控制台的错误日志:

com.google.android.gms.tasks.RuntimeExecutionException: 
  at com.google.android.gms.tasks.zzu.getResult (zzu.java:15)
  at com.example.MainActivity$3.onComplete (MainActivity.java:387)
  at com.google.android.gms.tasks.zzj.run (zzj.java:4)
  at android.os.Handler.handleCallback (Handler.java:808)
  at android.os.Handler.dispatchMessage (Handler.java:101)
  at android.os.Looper.loop (Looper.java:166)
  at android.app.ActivityThread.main (ActivityThread.java:7529)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:245)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:921)
Caused by: java.io.IOException: 
  at com.google.firebase.iid.zzu.then (zzu.java:16)
  at com.google.android.gms.tasks.zzd.run (zzd.java:5)
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1162)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
  at com.google.android.gms.common.util.concurrent.zza.run (zza.java:6)
  at java.lang.Thread.run (Thread.java:784)

这是负责获取 firebase 令牌的代码:

FirebaseInstanceId.getInstance().getInstanceId().addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
            @Override
            public void onComplete(@NonNull Task<InstanceIdResult> task) {
                if (task.getResult() != null && task.isSuccessful()) {
                    String firebaseToken = task.getResult().getToken();
                }
            }
        });

我正在使用以下 gradle 依赖项。

implementation 'com.google.firebase:firebase-analytics:17.4.3'
implementation 'com.google.firebase:firebase-crashlytics:17.0.1'
implementation 'com.google.firebase:firebase-messaging:20.2.0'

我发现了类似的问题和问题,但没有确定的答案。 一些人认为这可能是因为 inte.net 连接断开,但我的应用程序在进入应用程序之前需要进行身份验证,因此 inte.net 可用。 有没有人遇到同样的问题? 最好的祝福。 在此处输入图像描述

implementation platform('com.google.firebase:firebase-bom:26.4.0')
implementation "com.google.firebase:firebase-messaging"

炸弹已经埋下 (c) 谷歌……它还在那里……
最终得到以下代码:

    try {
        FirebaseMessaging.getInstance().getToken().addOnCompleteListener(task -> {
            if (task.isSuccessful()) {
                final String token = task.getResult();
                //GOT the token!
            }
        });
    } catch (Exception e) {
        // OMG, Firebase is used to log Firebase crash :)
        // I'm not sure if this will work...
        FirebaseCrashlytics.getInstance().recordException(e);
        gotFBCrash = true;
    }
    if (gotFBCrash) {
        FirebaseInstanceId.getInstance().getInstanceId().addOnCompleteListener(task -> {
            if (task.isSuccessful()) {
                final String token = task.getResult().getToken();
                //GOT the token!
            }
        });
    }

实际上,第二部分是两次弃用的代码(这就是为什么我在这里 - 更新到实际代码会导致应用程序崩溃)但它有效。 如果您愿意并且讨厌 try/catch,则只能使用第二种方式获取 FCM 令牌

这是Firebase端的bug,越来越多的用户受到这个问题的影响:

这是 Google 问题跟踪器上的问题:

这里是 Firebase 问题跟踪器上的问题:

如果您可以从您的用户那里获得更多信息来帮助 Google 开发人员解决此问题,它可能会有所帮助 =)

就我而言,以上都没有解决我的问题,我从服务回调中获取令牌并根据需要使用它

public class LatestFirebaseMessagingService extends FirebaseMessagingService {

@Override
public void onNewToken(String mToken) {
    super.onNewToken(mToken);
    Log.e("TOKEN",mToken);
}

问题发布已经两年了,但某些设备/模拟器上仍然存在异常。 原因之一是 Google Play 应用程序/服务不可用/已禁用(我今天刚遇到这个异常)。

需要 Google Play 服务来创建令牌,如果没有它,它将在设备上失败。

在获取 firebase 令牌时,我在某些设备上遇到以下错误:

Fatal Exception: d.b.a.b.g.f
java.io.IOException: AUTHENTICATION_FAILED
com.google.android.gms.tasks.zzu.getResult (zzu.java:15)
MainActivity$3.onComplete (MainActivity.java:387)

Caused by java.io.IOException
    AUTHENTICATION_FAILED
    com.google.firebase.iid.zzu.then (zzu.java:16)
    com.google.android.gms.tasks.zzd.run (zzd.java:5)
    java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1162)
    java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
    com.google.android.gms.common.util.concurrent.zza.run (zza.java:6)
    java.lang.Thread.run (Thread.java:784)

来自开发者控制台的错误日志:

com.google.android.gms.tasks.RuntimeExecutionException: 
  at com.google.android.gms.tasks.zzu.getResult (zzu.java:15)
  at com.example.MainActivity$3.onComplete (MainActivity.java:387)
  at com.google.android.gms.tasks.zzj.run (zzj.java:4)
  at android.os.Handler.handleCallback (Handler.java:808)
  at android.os.Handler.dispatchMessage (Handler.java:101)
  at android.os.Looper.loop (Looper.java:166)
  at android.app.ActivityThread.main (ActivityThread.java:7529)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:245)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:921)
Caused by: java.io.IOException: 
  at com.google.firebase.iid.zzu.then (zzu.java:16)
  at com.google.android.gms.tasks.zzd.run (zzd.java:5)
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1162)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
  at com.google.android.gms.common.util.concurrent.zza.run (zza.java:6)
  at java.lang.Thread.run (Thread.java:784)

这是负责获取 firebase 令牌的代码:

FirebaseInstanceId.getInstance().getInstanceId().addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
            @Override
            public void onComplete(@NonNull Task<InstanceIdResult> task) {
                if (task.getResult() != null && task.isSuccessful()) {
                    String firebaseToken = task.getResult().getToken();
                }
            }
        });

我正在使用以下 gradle 依赖项。

implementation 'com.google.firebase:firebase-analytics:17.4.3'
implementation 'com.google.firebase:firebase-crashlytics:17.0.1'
implementation 'com.google.firebase:firebase-messaging:20.2.0'

我发现了类似的问题和问题,但没有确定的答案。 有人认为这可能是互联网连接中断的结果,但我的应用程序需要在进入应用程序之前进行身份验证,以便互联网可用。 有没有人遇到同样的问题? 此致。 在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM