Flutter中Firebase Auth PhoneAuth移除reCAPTCHA失败求助(已配置App Check)
移除Flutter Firebase PhoneAuth的reCAPTCHA验证方案
1. 补全App Check的完整配置
你已启用Play Integrity,但需确认以下细节:
- 在Firebase控制台App Check页面,Android应用已正确关联Play Integrity,且完成所有验证步骤(如上传应用签名证书的SHA-256指纹,确保应用包名与控制台注册完全一致)
- 正式版应用必须通过Google Play渠道发布/安装,Play Integrity才能正常验证
2. 调整App Check的环境适配逻辑
调试环境下(直接通过Android Studio运行),Play Integrity无法完成验证,需切换到Debug Provider,否则仍会触发reCAPTCHA:
void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); await FirebaseAppCheck.instance.activate( webRecaptchaSiteKey: 'recaptcha-v3-site-key', // 根据环境自动切换Provider androidProvider: kDebugMode ? AndroidProvider.debug : AndroidProvider.playIntegrity, ); await GetStorage.init(); runApp(const MyApp()); }
调试环境额外操作:在Firebase控制台App Check页面添加调试设备的SHA-256指纹,获取命令:
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
3. 检查Firebase Auth配置与依赖版本
- 进入Firebase控制台Authentication > Sign-in method,确认Phone认证已启用,无额外限制规则
- 更新
pubspec.yaml中Firebase依赖到最新稳定版:
firebase_core: ^latest_version firebase_auth: ^latest_version firebase_app_check: ^latest_version
4. 排查验证失败场景
reCAPTCHA触发的核心原因是App Check验证未通过,可通过以下方式排查:
- 查看Logcat日志,搜索
FirebaseAppCheck或FirebaseAuth关键词,确认是否有验证失败的错误信息 - 正式版测试需上传至Google Play内部测试/封闭测试渠道,安装后再测试PhoneAuth功能
内容的提问来源于stack exchange,提问作者Gautam Patel
相关产品推荐
相关产品推荐

