Flutter项目Firebase Android调试令牌失效:Phone Auth仍触发reCAPTCHA
解决Flutter Firebase Phone Auth仍弹出reCAPTCHA的问题
以下是针对你遇到的问题的排查和解决步骤:
确认App Check初始化顺序
必须保证App Check的初始化代码早于Firebase Phone Auth的初始化逻辑。示例代码如下:void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); // 优先初始化App Check await FirebaseAppCheck.instance.activate( androidProvider: AndroidProvider.debug, appleProvider: AppleProvider.debug, webProvider: ReCaptchaV3Provider('你的reCAPTCHA v3站点密钥'), ); runApp(const MyApp()); }Web端即使启用调试模式,也必须指定
ReCaptchaV3Provider,否则会自动 fallback 到弹窗式reCAPTCHA验证。核对调试令牌的准确性
通过打印日志获取本地生成的调试令牌,再和Firebase控制台中添加的令牌完全比对:FirebaseAppCheck.instance.onTokenRefresh.listen((token) { print('当前App Check调试令牌: ${token.token}'); });注意不要遗漏或多输入空格,确保令牌完全匹配。
检查SHA-256指纹的关联配置
除了在Firebase项目的「常规设置」中添加SHA-256指纹,还要确认在App Check的「Android调试提供商」配置里,是否关联了该指纹。部分场景下仅项目设置添加指纹无法生效,需在App Check的具体提供商配置中确认绑定关系。Web端的额外配置与缓存清理
若在Web环境测试:- 在
firebase.json中添加调试令牌配置:{ "appCheck": { "debugToken": "你的调试令牌" } } - 清除浏览器缓存和本地存储,避免旧的reCAPTCHA会话残留导致验证触发。
- 在
确认构建模式为Debug
App Check调试模式仅对Debug构建生效,若运行的是Release版本,即使添加了调试令牌,仍会触发正常的reCAPTCHA验证。确保使用Debug模式运行:flutter run --debug
内容的提问来源于stack exchange,提问作者Kemal Abdillah
相关产品推荐
相关产品推荐

