Flutter中Firebase Phone Auth禁用Re-Captcha异常问题(2023)
Flutter Firebase Phone Auth 禁用Re-Captcha 问题排查与解决
你已经完成了启用Google Play Integrity API、添加SHA指纹、更新配置文件、添加依赖和启用App Check等操作,但Re-Captcha仍出现,可按以下步骤排查修复:
1. 核对App Check核心配置
- 在Firebase控制台的App Check模块中,为Android应用选择Play Integrity作为验证提供者,不要选其他选项。
- 确认已将对应环境(调试/发布)的SHA-256指纹准确添加到Play Integrity的配置项中,指纹与本地keystore完全匹配。
2. 修正Flutter端App Check初始化代码
在项目入口(如main.dart)中,必须明确指定Android使用Play Integrity提供者初始化App Check:
import 'package:flutter/material.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_app_check/firebase_app_check.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); // 关键:指定AndroidProvider为playIntegrity await FirebaseAppCheck.instance.activate( androidProvider: AndroidProvider.playIntegrity, ); runApp(const MyApp()); }
3. 确保依赖版本兼容
- 更新
pubspec.yaml中的Firebase相关依赖到最新稳定版:
dependencies: firebase_core: ^2.15.0 firebase_auth: ^4.10.0 firebase_app_check: ^0.2.1+11
- 在Android的
app/build.gradle中添加Play Integrity依赖,版本保持最新:
dependencies { implementation "com.google.android.play:integrity:1.2.0" // 其他Firebase依赖... }
4. 排查设备与运行环境问题
Re-Captcha无法跳过的常见场景:
- 使用Android模拟器测试:模拟器不支持Play Integrity验证,必须用真实Android设备
- 应用签名不匹配:调试版要用debug keystore的SHA指纹,发布版用正式签名的指纹,两者都要在控制台配置
- 设备未安装Google Play服务或版本过低:确保设备上的Google Play服务是最新版
5. 开启Phone Auth的App Check强制验证
在Firebase控制台进入Authentication > 登录方法 > 电话,勾选强制使用App Check选项,让Firebase优先验证App Check结果,跳过Re-Captcha。
6. 清理并重新部署应用
- 卸载设备上的现有测试应用
- 执行
flutter clean清理项目缓存 - 重新构建并安装应用,确保所有配置变更生效
内容的提问来源于stack exchange,提问作者Amit Kava
相关产品推荐
相关产品推荐

