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

Flutter Firebase手机号认证:Play Console内部测试版验证码无效

问题描述
  • 基于Flutter和Firebase开发手机号认证功能,已在Play Console开启Play Integrity,代码配置如下:
await FirebaseAppCheck.instance.activate(
  androidProvider: AndroidProvider.playIntegrity,
  appleProvider: AppleProvider.debug,
);
  • 通过USB部署到S20真机时,短信验证码可正常使用;但发布为Play Console内部测试版后,以测试者身份下载应用,输入验证码提示验证失败,且无法通过Android Studio打印调试日志。
排查解决方案

1. 验证Play Integrity与Firebase的绑定配置

  • 确认Firebase控制台对应Android应用的App Check已启用Play Integrity提供方,且关联的Play Console项目包名与应用完全一致。
  • 检查Play Console中应用的Play Integrity API是否已启用(进入API库搜索「Play Integrity API」,确认状态为启用)。
  • 确保Firebase应用设置中添加的SHA-1、SHA-256指纹包含Play签名后的指纹:在Play Console「应用签名」页面可获取发布签名指纹,需将其添加到Firebase应用的指纹列表中。

2. 调整App Check的测试适配配置

  • 内部测试阶段,若Play Integrity严格验证导致失败,可在Firebase控制台App Check设置中添加测试设备的设备ID,启用测试令牌,规避生产环境的验证限制。
  • 代码中可针对测试环境临时切换Android的App Check提供方,验证是否为Play Integrity的问题:
    // 可根据环境变量或编译标识区分测试/生产环境
    await FirebaseAppCheck.instance.activate(
      androidProvider: isTestEnvironment ? AndroidProvider.debug : AndroidProvider.playIntegrity,
      appleProvider: AppleProvider.debug,
    );
    
    注意内部测试版属于发布构建,需确保测试环境标识正确生效。

3. 抓取测试版应用的调试日志

  • 使用adb logcat命令直接抓取设备日志,过滤Firebase相关内容定位错误:
    1. 将测试设备连接电脑,确保开启USB调试。
    2. 执行命令:adb logcat -s FirebaseAuth FirebaseAppCheck,查看认证和App Check模块的错误信息。
  • 也可在应用中添加本地日志写入逻辑,将认证失败的详细错误信息保存到设备本地文件,后续导出分析。

4. 检查手机号认证的基础配置

  • 确认Firebase控制台中手机号认证方法已启用,未限制测试用户的手机号区域。
  • 检查内部测试版应用使用的google-services.json文件是否为Firebase控制台最新下载的版本(需包含Play签名指纹的配置)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:32:39