You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter应用集成Play Integrity API遇困,需完成Play Console第三步指导

解决Flutter Firebase电话认证移除reCAPTCHA的Play Integrity集成问题

要移除Firebase电话认证的reCAPTCHA,你确实需要在代码中完成额外的Play Integrity集成操作——Play Console里的“Integrate the Play Integrity API”步骤并非控制台内的点击操作,而是要求你完成客户端的代码集成,具体步骤如下:

1. 添加Flutter Play Integrity插件

在你的Flutter项目的pubspec.yaml中添加官方插件依赖:

dependencies:
  play_integrity: ^1.2.0 # 使用最新版本

执行flutter pub get安装插件。

2. 客户端代码集成Play Integrity令牌获取

在发起Firebase电话认证前,先调用Play Integrity API获取完整性令牌,用于向Firebase证明你的应用合法性:

import 'package:play_integrity/play_integrity.dart';

Future<String> fetchIntegrityToken() async {
  // 替换为你的谷歌云项目编号,可在Firebase控制台「项目设置」中找到
  const cloudProjectNumber = "你的云项目编号";
  
  final tokenResult = await PlayIntegrity.requestIntegrityToken(
    cloudProjectNumber: cloudProjectNumber,
  );
  return tokenResult.token;
}

3. 将令牌传入Firebase电话认证流程

修改你的电话认证代码,将获取到的Play Integrity令牌作为应用验证器传入:

import 'package:firebase_auth/firebase_auth.dart';

void initiatePhoneAuth(String phoneNumber) async {
  try {
    final integrityToken = await fetchIntegrityToken();
    
    await FirebaseAuth.instance.verifyPhoneNumber(
      phoneNumber: phoneNumber,
      verificationCompleted: (PhoneAuthCredential credential) async {
        await FirebaseAuth.instance.signInWithCredential(credential);
      },
      verificationFailed: (FirebaseAuthException e) {
        // 处理验证失败逻辑,比如号码格式错误等
      },
      codeSent: (String verificationId, int? resendToken) {
        // 保存verificationId,用于后续输入验证码后的验证
      },
      codeAutoRetrievalTimeout: (String verificationId) {
        // 处理超时逻辑
      },
      // 关键:传入Play Integrity令牌作为应用验证依据
      applicationVerifier: PlayIntegrityApplicationVerifier(integrityToken),
    );
  } catch (e) {
    // 处理令牌获取或认证流程中的异常
  }
}

4. 注意事项

  • 调试阶段仍会显示reCAPTCHA:Play Integrity仅对由Play Console签名的应用生效,本地调试签名的应用无法跳过reCAPTCHA。需将应用上传至Play Console的内部测试轨道,安装测试版本后才能验证效果。
  • Firebase控制台配置:确保在Firebase控制台的「Authentication」→「登录方法」→「电话」中,已启用相关的Play Integrity验证选项(若有)。
  • 版本兼容:保持build.gradle中的integrity依赖与Flutter插件版本兼容,避免版本冲突。

当你完成代码集成并将应用上传至Play Console后,Play Console中的Play Integrity API设置第三步会自动标记为完成,无需手动操作控制台按钮。

内容的提问来源于stack exchange,提问作者Muzammil Hassan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 21:23:36