当前位置: 首页 > 知识库问答 >
问题:

java.io.IOException: Android Firebase 中的FIS_AUTH_ERROR

高高雅
2023-03-14

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
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上发现这个问题与我的崩溃有关,但根本没有确凿的解决方案。有人遇到过这种问题吗?提前感谢。

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

共有3个答案

敖涵容
2023-03-14

突然间,同样的错误(FIS_AUTH_ERROR)出现在我的一个应用程序中,我在其中使用Firebase Cloud Messaging。一切正常,没有任何问题,突然间应用程序无法使用 getToken() 获取应用程序/设备令牌。经过几个小时的研究,我发现了一些东西,这为我解决了这个问题。我决定检查 google-services.json 文件中的值,看看它们是否与 Firebase html" target="_blank">控制台中我的项目设置中的相应参数匹配。首先,我下载了一个全新的google-services.json,我将其与应用程序文件夹中已有的进行比较,它们都完全相同,没有任何区别。在Firebase控制台中,我逐个检查了项目ID,项目编号等。当我得到Web API密钥时,它的值看起来与google-services.json中的api_key非常相似,但两个值仍然不同。然后我决定编辑该文件,并代替api_key我放置了 Web API 密钥中的值。然后我清理了项目并重建了,之后一切又开始完美地工作了。

2022年8月8日更新

最后一个键(MapsAPI键)是进入Firebase文件google-services.json的键。我下载了一份新的副本,但它仍然是一样的,从那以后没有任何变化。显然,这个密钥有相当严格的限制,但它打算在其他地方使用(谷歌地图飘动),而且它可以正常工作。

现在猜猜看!作为“Web API密钥”进入Firebase的密钥是第一个-Android密钥(由Firebase自动创建)。我不太了解Firebase和Google Cloud Console之间的组织方式,但考虑到密钥的名称,我认为第二个密钥-浏览器密钥(由Firebase自动创建)-应该在Firebase中找到“Web API密钥”的位置。

无论如何,在我的特定情况下,Firebase的Web API密钥在我的谷歌服务中正常工作。json,因为它实际上是我需要的Android密钥。我之所以写这些,是因为在其他一些情况下,它们可能并不完全相同。因此,如果需要,我们应该查看Google云控制台内部

习淇
2023-03-14

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

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

您可以从您的谷歌云更改限制-

路和悌
2023-03-14

临时但有效的解决方案。只需将 com.google.firebase:firebase消息:20.1.2降级为 .com.google.firebase:firebase消息:20.1。显然, 220.1.1201.2版本中存在某种错误。应用程序不再崩溃。

< del >更新(11.04.2020):我在< code > com . Google . firebase:firebase-messaging:20 . 1 . 5 中进行了测试,显然问题已经得到了解决。

更新(26.04.2020):

我找到了一个永久的解决方案。首先将 firebase 依赖项升级到 com.google.firebase:firebase-messaging:20.1.6。之后从Firebase下载google-services.json。将其替换为当前版本。之后构建

API key expired. Please renew the API key

错误。密钥没有问题,这是谷歌的某种错误。如果已完成这些步骤,请将以下代码添加到顶级应用程序类的 onCreate 中,该类在应用程序标记处的清单中声明。

FirebaseOptions options = new FirebaseOptions.Builder()
        .setApplicationId("APP ID") // Required for Analytics.
        .setProjectId("PROJECT ID") // Required for Firebase Installations.
        .setApiKey("GOOGLE API KEY") // Required for Auth.
        .build();
FirebaseApp.initializeApp(this, options, "FIREBASE APP NAME");

你可以在firebase中找到你的应用id

现在我不再撞车了。Firebase服务运行良好。

 类似资料:
  • 我使用子JPanel构造JScrollPane,然后尝试将JScrollPane添加到父JPanel中,希望有一个可滚动的自定义JPanel。 我有一个大的细白线前面的所有我的组件,他们是没有滚动。有什么想法吗?

  • 我已经为android Studio创建了一个webview应用程序。但没有加载web URL。错误为NET::ERR_ACCESS_DENIED。有谁能帮忙吗

  • 我有一个使用Java Version8的Spring和Maven的项目。当我运行maven update时,它适用于Java9或更高版本,当我编译它时,它适用于Java8。我注意到了这一点,因为用Maven更新会将一个特定的类更改为Java9,而我无法导入这个类。 这个类是:javax.annotation.generated(Java8)。 这是要导入的类。但是,当我进行maven更新时,文件的

  • 当应用程序启动EncryptionBootstrapConfiguration无法自动装配我的自定义TextEncryptor-https://github.com/spring-cloud/spring-cloud-commons/blob/cde7c7f3118382490c28776f66e0a56f248141fd/spring-cloud-context/src/main/java/or

  • 我有一个问题,找出我的源代码中的错误。 有什么办法可以解决它吗? 我的代码中抛出了“ArrayIndexOutOfBoundsException”,但我无法找到它的位置。 android studio中的logcat:

  • RISC-V 与中断相关的寄存器和指令 [info] 回顾:RISC-V 中的机器态(Machine Mode,机器模式,M 模式) 是 RISC-V 中的最高权限模式,一些底层操作的指令只能由机器态进行使用。 是所有标准 RISC-V 处理器都必须实现的模式。 默认所有中断实际上是交给机器态处理的,但是为了实现更多功能,机器态会将某些中断交由内核态处理。这些异常也正是我们编写操作系统所需要实现的