Firebase短信验证请求失败:17499错误及请求过多问题求助
解决Firebase手机认证中App Check令牌无效及请求次数过多问题
问题分析
从日志可定位两个核心问题:
- App Check令牌请求次数超限,被迫使用占位符令牌
- 短信验证失败,根源是Firebase App Check令牌无效(状态码17499)
结合你的配置,问题出在debug环境下的App Check配置与生产环境的Play Integrity规则不匹配,同时debug模式的请求限制触发了次数超限。
解决方案
1. 区分Debug/Release环境的App Check配置
你当前代码固定使用AndroidProvider.debug,但生产环境启用了Play Integrity,这会导致debug包无法生成有效令牌。需根据编译环境切换Provider:
import 'package:flutter/foundation.dart'; // ... await FirebaseAppCheck.instance.activate( webRecaptchaSiteKey: 'recaptcha-v3-site-key', androidProvider: kDebugMode ? AndroidProvider.debug : AndroidProvider.playIntegrity, );
2. 配置Debug环境的App Check指纹
- 通过Android Studio的
Gradle > app > Tasks > android > signingReport获取debug签名的SHA-1指纹 - 进入Firebase控制台 > 对应项目 > App Check > 目标Android应用 > Debug提供者,添加该debug SHA-1指纹
- 保存配置后,debug环境即可生成有效的App Check令牌
3. 解决请求次数过多问题
- 检查代码是否重复调用
FirebaseAppCheck.instance.activate(),避免多次触发令牌请求 - 开发阶段减少不必要的认证请求,或在测试时添加适当延迟,避免短时间内频繁请求触发限制
- 调试期间若因频繁重启应用导致超限,可暂时降低debug模式下App Check的验证严格性(仅用于开发,上线前必须恢复)
4. 验证Release环境的Play Integrity配置
确保Release包的签名SHA-1/SHA-256已正确添加到Firebase控制台和Google Cloud的Play Integrity配置中,且App Check已将Play Integrity设为Release环境的提供者。
内容的提问来源于stack exchange,提问作者Baimam Boukar Jean Jacques
相关产品推荐
相关产品推荐

