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

Flutter集成Firebase Twitter认证遇初始状态缺失问题求助

Flutter Twitter登录集成:"Missing Initial State" 错误解决方案

问题概述

  • 核心错误:Unable to process request due to missing initial state. This may happen if browser sessionStorage is inaccessible or accidentally cleared.
  • 触发流程:点击登录按钮进入授权页,完成授权操作后弹出错误,返回应用后还伴随其他异常

代码问题分析与修复

1. 导航逻辑错误:未等待登录完成就跳转

你的登录按钮点击事件中,调用twitterLogin()后立即执行Get.to(HomePage()),但twitterLogin()是异步操作,登录流程还未完成就跳转到首页,会直接中断认证流程,导致状态丢失。

修复后的login_page.dart关键代码:

@override
Widget build(BuildContext context) {
  return Scaffold(
    body: Center(
      child: ElevatedButton(
        onPressed: () async {
          await twitterLogin(); // 等待登录流程完全结束
          Get.to(HomePage());
        },
        child: const Text('Login With Twitter'),
      ),
    ),
  );
}

// 改为Future方法,增加结果判断和异常捕获
Future<void> twitterLogin() async {
  var apiKey = 'IJ4Dh20appLpoFOAgZ6Bj0IKu';
  var apiSecretKey = 'frBk5vaYkwekRWwsoEXgvtxtQQMFGKj0HhBNaLfu7ryknpdNbU';
  var redirectURI = 'https://tic-tac-toe-fb9aa.firebaseapp.com/__/auth/handler';

  final twitterLogin = TwitterLogin(
      apiKey: apiKey, apiSecretKey: apiSecretKey, redirectURI: redirectURI);
  
  try {
    final result = await twitterLogin.login();
    if (result.status == TwitterLoginStatus.loggedIn) {
      final twitterAuthCredentials = TwitterAuthProvider.credential(
        accessToken: result.authToken!,
        secret: result.authTokenSecret!,
      );
      await FirebaseAuth.instance.signInWithCredential(twitterAuthCredentials);
    } else {
      debugPrint('登录失败/取消:${result.status}');
    }
  } catch (e) {
    debugPrint('认证异常:$e');
  }
}

2. AndroidManifest Intent Filter配置错误

你将完整回调URL直接设置为scheme,不符合Android Intent Filter的规范,scheme仅需填写协议部分,域名和路径需分别通过host和path配置。

修复后的AndroidManifest.xml关键代码:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data 
        android:scheme="https"
        android:host="tic-tac-toe-fb9aa.firebaseapp.com"
        android:path="/__/auth/handler" />
</intent-filter>

额外验证点

  • 确认Twitter开发者平台配置的回调URL与代码中redirectURI完全一致(包括大小写、路径)
  • 检查Firebase控制台是否已启用Twitter登录,并正确填入API Key和Secret
  • 优先使用真实设备测试,部分模拟器可能存在sessionStorage访问限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 00:45:22