物理设备FirebaseMessaging报FIS_AUTH_ERROR,无法获取FCM令牌
解决FCM物理设备获取令牌报FIS_AUTH_ERROR问题
问题背景
已集成Firebase依赖:
implementation platform('com.google.firebase:firebase-bom:32.2.0') implementation 'com.google.firebase:firebase-analytics-ktx:21.3.0' implementation 'com.google.firebase:firebase-messaging-ktx:23.2.0'
获取FCM令牌代码:
FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task -> if (!task.isSuccessful) { Toast.makeText(baseContext, "Fetching FCM registration token failed", Toast.LENGTH_SHORT).show() return@OnCompleteListener } val token = task.result Toast.makeText(baseContext, token, Toast.LENGTH_SHORT).show() })
模拟器运行正常,但多台物理设备均抛出FIS_AUTH_ERROR异常。
排查与解决步骤
检查Firebase控制台的SHA指纹配置
物理设备使用的签名(调试/发布版)对应的SHA-1和SHA-256指纹必须添加到Firebase项目中。模拟器默认使用Android Studio自带的调试密钥库,其指纹通常已在Firebase控制台配置,但物理设备如果使用自定义签名或发布签名,指纹不匹配会直接导致认证失败。
获取指纹命令:keytool -list -v -keystore 你的签名文件路径.jks -alias 签名别名登录Firebase控制台→项目设置→添加指纹,将获取到的SHA-1和SHA-256填入保存。
替换最新的google-services.json
添加指纹后,必须从Firebase控制台下载最新的google-services.json文件,替换项目app目录下的旧文件,然后执行Clean Project和Rebuild Project操作。验证网络与权限配置
- 确保物理设备能正常访问Google服务,避免代理、翻墙或网络限制导致无法连接Firebase服务器。
- 检查AndroidManifest.xml中是否添加了必要权限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
更新Google Play服务
物理设备上的Google Play服务版本过低会引发认证错误。打开设备的Google Play商店,搜索并更新Google Play服务到最新版本。确认签名配置正确性
检查项目build.gradle(Module level)中的签名配置,确保打包时使用的签名文件和别名与Firebase控制台添加的指纹完全对应:android { signingConfigs { release { storeFile file("你的签名文件路径.jks") storePassword "你的密钥库密码" keyAlias "你的签名别名" keyPassword "你的密钥密码" } debug { storeFile file("~/.android/debug.keystore") // 默认调试密钥库 } } buildTypes { release { signingConfig signingConfigs.release // ...其他配置 } debug { signingConfig signingConfigs.debug // ...其他配置 } } }
内容的提问来源于stack exchange,提问作者Salavat Kadyrov
相关产品推荐
相关产品推荐

