如何在Android Flutter Firebase应用中移除手机号验证时的ReCaptcha验证
移除Firebase手机号验证中的ReCaptcha验证(用Play Integrity API替代)
既然你已经完成了Firebase控制台启用Play Integrity API、更新google-services.json、添加SHA1/SHA256这些前置操作,直接按下面的步骤替换ReCaptcha验证即可:
- 确认依赖配置:在模块级
build.gradle(或build.gradle.kts)中添加最新的Firebase Auth和Play Integrity依赖:
// Firebase Auth implementation 'com.google.firebase:firebase-auth:22.3.1' // Play Integrity implementation 'com.google.android.play:integrity:1.2.0'
- 配置Firebase Auth使用Play Integrity:在初始化Firebase Auth的代码里,指定用Play Integrity替代ReCaptcha做设备验证:
// Kotlin 示例 val auth = FirebaseAuth.getInstance() val playIntegrityConfig = PlayIntegrityAuthProvider.getPlayIntegrityConfig() auth.setAuthRequestConfig(playIntegrityConfig)
// Java 示例 FirebaseAuth auth = FirebaseAuth.getInstance(); AuthRequestConfig playIntegrityConfig = PlayIntegrityAuthProvider.getPlayIntegrityConfig(); auth.setAuthRequestConfig(playIntegrityConfig);
- 调整手机号验证流程:原来的验证码发送代码不需要额外的ReCaptcha相关配置,直接调用即可,现在会通过Play Integrity在应用内完成设备验证,不再跳转浏览器:
// Kotlin 发送验证码示例 val options = PhoneAuthOptions.newBuilder(auth) .setPhoneNumber(yourPhoneNumber) .setTimeout(60L, TimeUnit.SECONDS) .setActivity(this) .setCallbacks(phoneAuthCallbacks) .build() PhoneAuthProvider.verifyPhoneNumber(options)
- 权限与测试提醒:
- 确保
AndroidManifest.xml中声明了INTERNET权限,Play Integrity需要联网完成验证 - 测试时优先使用已签名的APK/AAB(若用debug包,需在Firebase控制台添加debug包的SHA指纹),未签名的debug包可能无法正常触发Play Integrity验证
- 设备需安装最新版本的Google Play服务
- 确保
内容的提问来源于stack exchange,提问作者Pranav Khandelwal
相关产品推荐
相关产品推荐

