You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

发布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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 01:44:56