[java.io.IOException:Android Firebase中的FIS_AUTH_ERROR

问题描述 投票:2回答:4

我在使用Firebase服务时遇到以下错误。

 E/FirebaseInstanceId: Topic sync or token retrieval failed on hard failure exceptions: FIS_AUTH_ERROR. Won't retry the operation.
 D/AndroidRuntime: Shutting down VM
    com.google.android.gms.tasks.RuntimeExecutionException: java.io.IOException: FIS_AUTH_ERROR
        at com.google.android.gms.tasks.zzu.getResult(Unknown Source:15)
        at com.myApp.MainActivity$2.onComplete(MainActivity.java:349)
        at com.google.android.gms.tasks.zzj.run(Unknown Source:4)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:237)
        at android.app.ActivityThread.main(ActivityThread.java:7804)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1068)
     Caused by: java.io.IOException: FIS_AUTH_ERROR
        at com.google.firebase.iid.zzs.zza(com.google.firebase:firebase-iid@@20.1.0:82)
        at com.google.firebase.iid.zzs.zza(com.google.firebase:firebase-iid@@20.1.0:96)
        at com.google.firebase.iid.zzx.then(com.google.firebase:firebase-iid@@20.1.0:4)
        at com.google.android.gms.tasks.zzd.run(Unknown Source:5)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)

这里是发生崩溃的代码部分:

        FirebaseInstanceId.getInstance().getInstanceId().addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
            @Override
            public void onComplete(@NonNull Task<InstanceIdResult> task) {
                if (task.getResult() != null && task.isSuccessful()) {
                    // Get new Instance ID token
                    firebaseToken = task.getResult().getToken();
                    prefs.edit().putString("firebaseToken", firebaseToken).apply();
                    registerToken();
                }
            }
        });

错误发生在onComplete中。这是我使用的firebase依赖项:

    // FIREBASE
implementation 'com.google.firebase:firebase-analytics:17.2.3'
implementation 'com.google.firebase:firebase-messaging:20.1.2'
implementation 'com.google.firebase:firebase-appindexing:19.1.0'
implementation 'com.google.firebase:firebase-ads:19.0.0'
implementation 'com.google.firebase:firebase-crashlytics:17.0.0-beta01'

我在Github上发现了this issue与我的崩溃有关,但根本没有最终的解决方案。有人遇到过这种问题吗?预先感谢。

注意:我不使用Flutter,但是也会发生错误而没有Flutter。设备是带有Android 10的Samsung A51。

注2:Firebase删除了firebase-core。问题可能与此有关。enter image description here

android firebase ioexception
4个回答
3
投票

临时但可行的解决方案。只需将com.google.firebase:firebase-messaging:20.1.2降级为com.google.firebase:firebase-messaging:20.1.0。显然,20.1.1和20.1.2版本中存在某种错误。应用程序不再崩溃。


1
投票

您要做的只是使您正在使用的API密钥具有以下API的权限:

  1. Firebase安装API
  2. Firebase Cloud Messaging API
  3. FCM注册API
  4. 云消息传递

您可以从Google云端更改限制-> API和服务->凭据


1
投票

这是可以肯定的,(如果您完成了所有配置),则Firebase消息传递的版本与其他依赖项不兼容。

您可以检查依赖性here,我的解决方法是从implementation 'com.google.firebase:firebase-messaging:20.1.3'降级到implementation 'com.google.firebase:firebase-messaging:20.1.0'


0
投票

FIS_AUTH_ERROR表示对Firebase安装SDK]的身份验证失败。如果您使用依赖于Firebase安装SDK(或FIS)的服务,则需要有效的授权。

根据Firebase cloud messaging v20.1.1 release note

使用Firebase自动初始化过程和Gradle插件将google-services.json转换为资源的应用不会受到影响。但是,创建自己的FirebaseOptions实例的应用程序必须提供有效的API密钥,Firebase项目ID和应用程序ID。

因此,如果您(或您添加的使用fcm的服务)使用v20.1.1,则它必须为FIS传递一些其他值。

© www.soinside.com 2019 - 2024. All rights reserved.