2023年如何在Firebase Phone Auth(OTP)中禁用reCaptcha?
问题背景
自2023年2月新项目无法使用SafetyNet API后,迁移到替代方案Play Integrity API,但始终触发“验证您并非机器人...”的reCaptcha提示,该问题在原生Android、React Native、Flutter应用中均有出现。已完成Play Console中Play Integrity API的启用,并关联了Firebase项目,但Google支持的回复未解决问题,甚至仍建议已弃用的SafetyNet API。
Google支持的相关回复:
很遗憾,我们无法提供Play Integrity API实现电话认证的时间线。目前,您可以使用reCAPTCHA验证进行电话号码认证。SafetyNet弃用与reCAPTCHA API无关,这两个SafetyNet API相互独立,Attestation API弃用不会影响reCAPTCHA API。迁移到Play Integrity API后,您仍可使用该API。



可能的操作失误与解决建议
检查Play Integrity API的端到端集成
仅在控制台启用API是不够的,必须在应用中完整实现Play Integrity的认证流程:前端调用PlayIntegrityManager.generateIntegrityToken()获取令牌,后端将令牌发送到Google的验证服务校验结果。如果仍在使用旧的SafetyNet调用逻辑,或未替换reCaptcha的触发条件,会导致持续出现验证提示。确认签名证书配置一致
Play Integrity API对应用签名的校验极为严格,需确保Play Console中配置的上传密钥/应用签名密钥,与应用打包时使用的签名完全匹配。签名不匹配会导致完整性验证失败,系统自动 fallback 到reCaptcha。调整reCaptcha的触发逻辑
排查应用和后端代码,确认是否存在“默认触发reCaptcha”的逻辑。应将Play Integrity验证作为首要校验方式,仅当验证结果显示设备篡改、应用非官方分发等风险时,才触发reCaptcha作为补充验证,而非强制触发。利用Play Integrity的认证能力替代reCaptcha
Play Integrity的DEVICE_INTEGRITY(设备完整性)和APP_INTEGRITY(应用完整性)维度已能提供足够的合法性验证,无需依赖reCaptcha。后端需正确解析Play Integrity的响应,根据验证结果直接放行,而非绕开它强制要求reCaptcha。重新核对Firebase与Play Console的关联
确认双向绑定是否正确:Play Console中已关联目标Firebase项目,同时Firebase控制台中已绑定对应Android应用,且API密钥、服务账号的权限配置完整。关联不完整可能导致API调用失败,触发reCaptcha fallback。
内容的提问来源于stack exchange,提问作者RaideR

