首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java.io.IOException:安卓火药库中的FIS_AUTH_ERROR

java.io.IOException:安卓火药库中的FIS_AUTH_ERROR
EN

Stack Overflow用户
提问于 2020-03-15 23:13:49
回答 29查看 60.9K关注 0票数 48

我正在跟踪Firebase服务的错误。

代码语言:javascript
运行
复制
 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)

以下是发生崩溃的代码的一部分:

代码语言:javascript
运行
复制
        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依赖项:

代码语言:javascript
运行
复制
    // 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'

我发现了与我的坠机有关的本期,但根本没有决定性的解决方案。有人遇到过这样的问题吗?提前谢谢。

注意:我不使用颤振,但是错误发生时也没有颤振。设备是三星A51与安卓10。

注2:火基被移除-核心。问题可能与此有关。

EN

回答 29

Stack Overflow用户

发布于 2020-03-21 11:56:12

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

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

您可以更改google云-> APIs & Services ->凭据中的限制。

票数 25
EN

Stack Overflow用户

发布于 2021-05-03 19:34:28

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

更新08.2022

一年多后,我可以确认上述内容仍然有效。尽管我决定按照安布罗斯·巴科的建议检查Google控制台中的关键限制。然后我发现,我的账户中可用的不同密钥的混乱程度甚至更大。

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

现在你猜怎么着!作为"Web密钥“进入Firebase的密钥是第一个- Android密钥(由Firebase自动创建)。我不太明白Firebase和Google控制台之间如何组织不同的内容,但考虑到密钥的名称,我认为第二个键--浏览器键(由Firebase自动创建)--应该在Firebase中作为"Web键“的位置。

无论如何,在我的特殊情况下,Firebase的Web密钥在我的google-services.json中正常工作,因为它实际上是我需要的Android密钥。我之所以写这些,是因为在其他一些情况下,情况可能不完全相同。因此,如果需要,应该查看Google控制台> API & Services >凭据> APIs,并从其中获取正确的Android键(单击右侧的"SHOW KEY“),然后将其放入Firebase文件google-services.json中。希望这能帮上忙。

票数 24
EN

Stack Overflow用户

发布于 2021-05-30 17:59:41

如果最近更改了google-services.json文件,则需要删除项目的生成文件并重新构建项目。

更新:当我在调试模式下测试我的应用程序时,我得到了这个错误。在发行版中,它得到了正确的解决和工作。

https://stacklearn.ir/course/android-introductory-training-course

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60698622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档