Release模式下获取App Check令牌失败问题求助
兄弟,我之前在做Firebase App Check的时候也碰到过一模一样的Release模式报错问题,折腾了好一阵才搞定,给你几个排查方向,你一个个试试:
先核对Firebase控制台的SHA-256指纹配置:Debug模式用的是调试签名密钥的指纹,Release包一般用的是正式签名密钥,这俩指纹肯定不一样。你得先导出Release正式密钥的SHA-256,然后去Firebase项目的「App Check」设置里,把这个Release指纹添加进去,别只加了Debug的哦。
检查Play Integrity(或SafetyNet)提供者的配置:如果你的Android App用的是Play Integrity作为App Check的验证提供者,要注意——如果是本地打包的Release包还没上传到Google Play Console,可能会出现验证失败的情况。这种时候要么把包上传到Play的内部测试渠道,要么暂时切换到Debug提供者(不过正式发布前记得切回来);如果已经上传了Play,那要确保Firebase和Play Console的绑定是正常的。
别漏了ProGuard/R8混淆规则:有时候R8混淆会把App Check和Play Integrity相关的核心类给优化掉,导致验证流程出问题。你得在
proguard-rules.pro里加上这些规则,防止必要的类被混淆:
-keep class com.google.firebase.appcheck.** { *; } -keep class com.google.android.gms.playintegrity.** { *; } -keep class com.google.firebase.appcheck.playintegrity.** { *; }
验证Release包的实际签名:有时候打包时可能选错了签名密钥,导致实际生成的Release包用的签名和你在Firebase里配置的不一致。你可以用
apksigner verify --print-certs your-release.apk命令,导出包的签名指纹,和Firebase里的对比,确保完全一致。检查Google Cloud的API权限:确保你的Firebase项目已经启用了Play Integrity API,对应的服务账号也有足够的权限。你可以去Google Cloud Console里搜索「Play Integrity API」,确认它是启用状态,再检查相关服务账号的权限配置。
内容来源于stack exchange

