发布Compose Multiplatform应用至Google Play遇FIS_AUTH_ERROR问题
问题:Compose Multiplatform应用Play商店审核因FIS_AUTH_ERROR崩溃
将Compose Multiplatform应用发布至Google Play商店时遇到问题:应用在本地设备的release模式下运行正常,但上传应用包后被拒,崩溃原因与Firebase Cloud Messaging(FCM)相关,具体为FIS_AUTH_ERROR。
报错堆栈信息
Exception java.io.IOException: java.util.concurrent.ExecutionException: java.io.IOException: FIS_AUTH_ERROR at com.google.firebase.messaging.FirebaseMessaging.blockingGetToken (FirebaseMessaging.java) at java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:462) at java.util.concurrent.FutureTask.run (FutureTask.java:266) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run (ScheduledThreadPoolExecutor.java:301) 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:920) Caused by java.util.concurrent.ExecutionException: java.io.IOException: FIS_AUTH_ERROR at com.google.android.gms.tasks.Tasks.zza (com.google.android.gms:play-services-tasks@@18.1.0) at com.google.android.gms.tasks.Tasks.await (com.google.android.gms:play-services-tasks@@18.1.0:9) at com.google.firebase.messaging.FirebaseMessaging.blockingGetToken (FirebaseMessaging.java) Caused by java.io.IOException: FIS_AUTH_ERROR at com.google.firebase.messaging.GmsRpc.handleResponse (GmsRpc.java:332) at com.google.firebase.messaging.GmsRpc.lambda$extractResponseWhenComplete$0 (GmsRpc.java:343) at com.google.android.gms.tasks.zzc.run (com.google.android.gms:play-services-tasks@@18.1.0) at com.google.android.gms.tasks.zzd.zzd (com.google.android.gms:play-services-tasks@@18.1.0) at com.google.android.gms.tasks.zzr.zzb (com.google.android.gms:play-services-tasks@@18.1.0) at com.google.android.gms.tasks.zzw.zzb (com.google.android.gms:play-services-tasks@@18.1.0) at com.google.android.gms.tasks.zzc.run (com.google.android.gms:play-services-tasks@@18.1.0) at com.google.android.gms.cloudmessaging.zzy.execute (com.google.android.gms:play-services-cloud-messaging@@17.2.0) at com.google.android.gms.tasks.zzd.zzd (com.google.android.gms:play-services-tasks@@18.1.0) at com.google.android.gms.tasks.zzr.zzb (com.google.android.gms:play-services-tasks@@18.1.0) at com.google.android.gms.tasks.zzw.zzb (com.google.android.gms:play-services-tasks@@18.1.0) at com.google.android.gms.tasks.TaskCompletionSource.setResult (com.google.android.gms:play-services-tasks@@18.1.0) at com.google.android.gms.cloudmessaging.zzs.zzd (com.google.android.gms:play-services-cloud-messaging@@17.2.0) at android.os.Handler.dispatchMessage (Handler.java:102) at android.os.Looper.loopOnce (Looper.java:201) at android.os.Looper.loop (Looper.java:288) at android.app.ActivityThread.main (ActivityThread.java:7839) at java.lang.reflect.Method.invoke at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1003)
该错误发生在调用FirebaseMessaging.blockingGetToken获取FCM令牌时,与Firebase Installations相关。
已尝试的解决步骤
- 验证
google-services.json配置正确 - 检查Google Cloud Console中的Firebase Cloud Messaging API状态
- 确认Firebase中SHA-1指纹配置无误
- 确保所有Firebase依赖已更新
请问如何解决FIS_AUTH_ERROR以避免应用在Play商店审核时崩溃?
解决建议
1. 添加Play商店应用签名的证书指纹到Firebase
本地release模式使用的是你自己的签名密钥,但Play商店会对发布的应用进行重新签名,审核时使用的是Play商店的签名证书。你需要:
- 登录Play控制台,进入应用的「应用签名」页面,复制SHA-1和SHA-256指纹
- 打开Firebase控制台,进入项目设置,在「应用」标签下添加这两个指纹
- 重新下载最新的
google-services.json替换到Android模块中
2. 启用Firebase Installations API
FIS_AUTH_ERROR直接关联Firebase Installations服务,需确保该API已启用:
- 登录Google Cloud Console,搜索「Firebase Installations API」
- 确认API状态为「已启用」,若未启用则点击启用
3. 捕获令牌获取的异常,避免崩溃
不要直接调用blockingGetToken而不处理异常,添加try-catch逻辑:
try { val token = FirebaseMessaging.getInstance().blockingGetToken() // 处理令牌逻辑 } catch (e: IOException) { // 记录日志,后续重试获取令牌 Log.e("FCM", "Failed to get token: ${e.message}") }
即使令牌获取失败,也保证应用能继续运行,后续可通过定时任务重试。
4. 确认包名完全匹配
检查Firebase项目中配置的应用包名,与Compose Multiplatform Android模块的applicationId完全一致(包括大小写),包名不匹配会导致身份验证失败。
5. 检查依赖兼容性
确保Compose Multiplatform版本与Firebase依赖版本兼容,避免因版本不匹配导致的隐性错误。
内容的提问来源于stack exchange,提问作者DoctorWho
相关产品推荐
相关产品推荐

