Firebase Google/Apple认证仅APK直接安装有效,Play商店应用包认证失效
问题描述
- 构建签名APK安装到设备时,认证功能正常;但生成App Bundle发布至Play商店测试渠道后,认证失效
- Google认证:显示账号选择器,选择账号后选择器消失,无任何反应(logcat无错误日志)
- Apple认证:完全无反应,logcat报错:
INVALID_CERT_HASH 400 - 已核对签名密钥证书哈希,添加debug/release的SHA1、SHA256到Firebase控制台,更新了google-services.json,本地签名APK或Android Studio运行时功能正常
Apple登录时的logcat完整输出:
2022-08-16 00:36:06.428 1973-1973/? W/adbd: timeout expired while flushing socket, closing 2022-08-16 00:36:06.743 2790-3875/? I/HbmSvManager: Request state 2 req 0 2022-08-16 00:36:07.035 1186-1569/? V/DisplayPowerController[0]: Brightness [0.06408318] reason changing to: 'automatic', previous reason: 'automatic [ dim ]'. 2022-08-16 00:36:07.049 504-504/? I/display: level=88, DimmingOn=1, HbmMode=0, LhbmOn=0 2022-08-16 00:36:07.065 504-504/? I/display: level=96, DimmingOn=1, HbmMode=0, LhbmOn=0 2022-08-16 00:36:07.081 504-504/? I/display: level=103, DimmingOn=1, HbmMode=0, LhbmOn=0 2022-08-16 00:36:07.083 1071-1071/? D/AOC: A3:MSG: tmd3719_sensor.cc, 281: USF: TMD3719: brightness:103 refresh_rate:60 status:1 2022-08-16 00:36:07.099 504-504/? I/display: level=111, DimmingOn=1, HbmMode=0, LhbmOn=0 2022-08-16 00:36:07.115 504-504/? I/display: level=119, DimmingOn=1, HbmMode=0, LhbmOn=0 2022-08-16 00:36:07.132 504-504/? I/display: level=128, DimmingOn=1, HbmMode=0, LhbmOn=0 2022-08-16 00:36:07.149 504-504/? I/display: level=137, DimmingOn=1, HbmMode=0, LhbmOn=0 2022-08-16 00:36:07.163 1186-2628/? I/ActivityTaskManager: START u0 {act=com.google.firebase.auth.internal.NONGMSCORE_SIGN_IN pkg=redacated.myapp.com cmp=redacated.myapp.com/com.google.firebase.auth.internal.GenericIdpActivity (has extras)} from uid 10250 2022-08-16 00:36:07.170 504-504/? I/display: level=146, DimmingOn=1, HbmMode=0, LhbmOn=0 2022-08-16 00:36:07.172 1186-2628/? W/ActivityTaskManager: Tried to set launchTime (0) < mLastActivityLaunchTime (15219249) 2022-08-16 00:36:07.180 12284-12896/? W/System: Ignoring header X-Firebase-Locale because its value was null. 2022-08-16 00:36:07.184 504-504/? I/display: level=155, DimmingOn=1, HbmMode=0, LhbmOn=0 2022-08-16 00:36:07.190 504-504/? I/display: level=159, DimmingOn=1, HbmMode=0, LhbmOn=0 2022-08-16 00:36:07.198 1186-1543/? I/ActivityTaskManager: Displayed redacated.myapp.com/com.google.firebase.auth.internal.GenericIdpActivity: +35ms 2022-08-16 00:36:07.199 504-504/? I/display: level=165, DimmingOn=1, HbmMode=0, LhbmOn=0 2022-08-16 00:36:07.217 1851-1851/? I/GoogleInputMethodService: GoogleInputMethodService.onFinishInput():3273 2022-08-16 00:36:07.218 1851-1851/? I/GoogleInputMethodService: GoogleInputMethodService.updateDeviceLockedStatus():2165 repeatCheckTimes = 0, unlocked = true 2022-08-16 00:36:07.218 504-504/? I/display: level=175, DimmingOn=1, HbmMode=0, LhbmOn=0 2022-08-16 00:36:07.218 1851-1851/? I/GoogleInputMethodService: GoogleInputMethodService.onStartInput():1956 onStartInput(EditorInfo{inputType=0x0(NULL) imeOptions=0x0 privateImeOptions=null actionName=UNSPECIFIED actionLabel=null actionId=0 initialSelStart=-1 initialSelEnd=-1 initialCapsMode=0x0 hintText=null label=null packageName=redacated.myapp.com fieldId=-1 fieldName=null extras=null}, false) 2022-08-16 00:36:07.218 1851-1851/? I/GoogleInputMethodService: GoogleInputMethodService.shouldHideHeaderOnInitialState():4081 ShouldHideHeaderOnInitialState = false 2022-08-16 00:36:07.218 1851-1851/? I/GoogleInputMethodService: GoogleInputMethodService.updateDeviceLockedStatus():2165 repeatCheckTimes = 2, unlocked = true 2022-08-16 00:36:07.233 504-504/? I/display: level=185, DimmingOn=1, HbmMode=0, LhbmOn=0 2022-08-16 00:36:07.248 504-504/? I/display: level=196, DimmingOn=1, HbmMode=0, LhbmOn=0 2022-08-16 00:36:07.271 504-504/? I/display: level=211, DimmingOn=1, HbmMode=0, LhbmOn=0 2022-08-16 00:36:07.273 1071-1071/? D/AOC: A3:MSG: tmd3719_sensor.cc, 281: USF: TMD3719: brightness:211 refresh_rate:60 status:1 2022-08-16 00:36:07.289 504-504/? I/display: level=215, DimmingOn=1, HbmMode=0, LhbmOn=0 2022-08-16 00:36:07.578 12284-12896/? E/FirebaseAuth: [GetAuthDomainTask] Error getting project config. Failed with INVALID_CERT_HASH 400 2022-08-16 00:36:07.660 1186-1617/? W/InputManager-JNI: Input channel object '24df3cb redacated.myapp.com/com.google.firebase.auth.internal.GenericIdpActivity (client)' was disposed without first being removed with the input manager! 2022-08-16 00:36:07.666 1851-1851/? I/GoogleInputMethodService: GoogleInputMethodService.onFinishInput():3273 2022-08-16 00:36:07.667 1851-1851/? I/GoogleInputMethodService: GoogleInputMethodService.updateDeviceLockedStatus():2165 repeatCheckTimes = 0, unlocked = true 2022-08-16 00:36:07.667 1851-1851/? I/GoogleInputMethodService: GoogleInputMethodService.onStartInput():1956 onStartInput(EditorInfo{inputType=0x0(NULL) imeOptions=0x12000000 privateImeOptions=null actionName=UNSPECIFIED actionLabel=null actionId=0 initialSelStart=-1 initialSelEnd=-1 initialCapsMode=0x0 hintText=null label=null packageName=redacated.myapp.com fieldId=2131231160 fieldName=null extras=null}, false) 2022-08-16 00:36:07.667 1851-1851/? I/GoogleInputMethodService: GoogleInputMethodService.shouldHideHeaderOnInitialState():4081 ShouldHideHeaderOnInitialState = false 2022-08-16 00:36:07.667 1851-1851/? I/GoogleInputMethodService: GoogleInputMethodService.updateDeviceLockedStatus():2165 repeatCheckTimes = 2, unlocked = true 2022-08-16 00:36:07.890 2790-3875/? I/HbmSvManager: Request state 2 req 0 2022-08-16 00:36:07.919 2790-3875/? I/HbmSvManager: Request state 2 req 0
解决方案
核心原因是Play App Signing会使用Google的证书重新签名你的应用,你本地的签名哈希在Play发布后不再生效,需要添加Play生成的签名证书哈希到相关配置中:
1. 获取Play应用签名证书的哈希值
- 打开Google Play Console,进入你的应用
- 进入发布 > 设置 > 应用签名页面
- 复制应用签名证书区域的SHA-1和SHA-256值
2. 添加到Firebase控制台
- 打开Firebase控制台,进入对应项目
- 进入项目设置 > 应用,找到你的Android应用
- 点击添加指纹,粘贴刚才复制的SHA-1和SHA-256,保存
3. 配置Apple登录的证书哈希
- 打开Apple开发者后台,找到你的应用对应的Apple登录配置
- 将Play应用签名证书的SHA-256值转换为Base64格式(执行命令
echo -n "SHA256_HEX_VALUE" | xxd -r -p | base64生成),添加到Android应用的签名哈希配置中
4. 更新项目配置并重新发布
- 从Firebase控制台重新下载
google-services.json,替换到项目的app/目录下 - 重新构建App Bundle,上传到Play商店测试渠道
- 等待Play处理完成后,重新安装测试
完成以上步骤后,Google和Apple认证即可正常工作,因为此时Firebase和Apple后台的签名哈希与Play发布后的应用签名匹配。
内容的提问来源于stack exchange,提问作者meds
相关产品推荐
相关产品推荐

