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

Firebase Android:已注册SHA256指纹仍出现无效AppCheck令牌错误

Firebase App Check 无效令牌问题排查及Play Integrity生效条件说明

一、无效令牌问题的常见排查点

  • 确认签名指纹匹配:
    你用./gradlew signingReport获取的SHA-256指纹,要确保是当前运行应用的签名配置对应的指纹。比如用debug签名运行,就得把debug的SHA-256加到Firebase控制台的Play Integrity和SafetyNet配置里;如果是release签名,要对应release的指纹。很多人会搞混debug和release的指纹,导致不匹配。
  • 初始化代码的位置与方式:
    不需要在所有Activity里初始化,正确的做法是在Application类的onCreate()方法里全局初始化,比如:
    class MyApp : Application() {
        override fun onCreate() {
            super.onCreate()
            FirebaseApp.initializeApp(this)
            val appCheck = FirebaseAppCheck.getInstance()
            appCheck.installAppCheckProviderFactory(
                PlayIntegrityAppCheckProviderFactory.getInstance()
            )
        }
    }
    
    还要记得在AndroidManifest.xml里配置这个Application类。如果在Activity里重复初始化,可能会导致令牌生成异常。
  • 检查Firebase控制台配置:
    确保在Firebase控制台的App Check页面,已经正确启用了Play Integrity和SafetyNet,并且对应的SHA-256指纹已经添加到这两个验证方式的配置中,没有遗漏。另外,确认你的应用包名和控制台里的包名完全一致。
  • 设备的Google Play服务版本:
    Play Integrity依赖Google Play服务,物理设备上的Google Play服务版本过低可能导致验证失败,建议把设备的Google Play服务更新到最新版本。

二、Play Integrity的生效条件

官方文档提到的“仅支持Google Play分发的应用”,并不是说必须发布到Play商店才能测试。你可以通过以下方式在本地测试:

  • 使用内部测试/封闭测试渠道:把应用上传到Play Console的内部测试渠道,然后用测试账号下载安装,此时Play Integrity可以正常工作。
  • 使用Play Integrity的调试模式:在Firebase控制台的App Check页面,为你的应用添加调试令牌,然后在初始化时设置调试模式,这样本地运行的应用也能生成有效的App Check令牌。比如:
    appCheck.installAppCheckProviderFactory(
        PlayIntegrityAppCheckProviderFactory.getInstance()
    )
    // 调试模式设置
    if (BuildConfig.DEBUG) {
        val debugProviderFactory = DebugAppCheckProviderFactory.getInstance()
        appCheck.installAppCheckProviderFactory(debugProviderFactory)
    }
    
    注意调试模式只用于开发阶段,正式发布前要移除。

如果直接用本地签名的APK在物理设备上运行(不上传到Play渠道),Play Integrity确实无法正常验证,因为它依赖Play商店的分发上下文来确认应用的合法性。


内容的提问来源于stack exchange,提问作者user20897932

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:51:28