我正在跟踪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'
我发现了与我的坠机有关的本期,但根本没有决定性的解决方案。有人遇到过这样的问题吗?提前谢谢。
注意:我不使用颤振,但是错误发生时也没有颤振。设备是三星A51与安卓10。
注2:火基被移除-核心。问题可能与此有关。
发布于 2020-03-21 11:56:12
您所要做的就是使您正在使用的API密钥具有对以下API的权限:
您可以更改google云-> APIs & Services ->凭据中的限制。
发布于 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中。希望这能帮上忙。
发布于 2021-05-30 17:59:41
如果最近更改了google-services.json文件,则需要删除项目的生成文件并重新构建项目。
更新:当我在调试模式下测试我的应用程序时,我得到了这个错误。在发行版中,它得到了正确的解决和工作。
https://stacklearn.ir/course/android-introductory-training-course
https://stackoverflow.com/questions/60698622
复制相似问题