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

Flutter+Firebase实现Twitter登录授权后无法返回应用问题求解

解决方案

1. 修正AndroidManifest.xml配置位置

  • 你当前配置的intent-filter必须放在主启动Activity的标签内部,而非application全局标签下,正确层级示例:
<application
    android:name="io.flutter.app.FlutterApplication"
    android:label="social_demo"
    android:icon="@mipmap/ic_launcher">
    <activity
        android:name=".MainActivity"
        android:launchMode="singleTop"
        android:theme="@style/LaunchTheme"
        android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
        android:hardwareAccelerated="true"
        android:windowSoftInputMode="adjustResize">
        <!-- 原有启动intent-filter -->
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
        <!-- 推特回调的intent-filter放这里 -->
        <intent-filter android:autoVerify="true">
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="flutter-twitter-auth"/>
        </intent-filter>
    </activity>
</application>
  • Android 11及以上版本需要在application标签同级新增queries配置,否则无法识别浏览器回调:
<queries>
  <intent>
    <action android:name="android.intent.action.VIEW" />
    <data android:scheme="https" />
  </intent>
</queries>

2. 修复回调地址匹配问题

  • 确认Twitter开发者后台的回调地址与代码中redirectURI完全一致,你代码中配置的是flutter-twitter-auth://,后台不能多写路径后缀(比如flutter-twitter-auth://callback),前后必须完全匹配
  • 确认Twitter开发者后台已开启3-legged OAuth开关,该开关未开启会导致回调直接失效

3. 修复版本兼容问题

你使用的twitter_login: ^4.0.1存在已知的回调处理bug,可通过两种方式修复:

  • 升级包版本到最新稳定版twitter_login: ^4.4.0
  • 若升级后存在其他兼容问题,可降级到twitter_login: ^3.0.1测试

4. 补充MainActivity回调处理

在安卓原生的MainActivity中重写onNewIntent方法,手动传递回调事件给插件:

//  MainActivity.kt 示例
import android.content.Intent
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import com.roughike.twitter_login.TwitterLoginPlugin

class MainActivity: FlutterActivity() {
    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)
    }

    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        TwitterLoginPlugin.handleCallback(intent)
    }
}

完成以上修改后清理项目缓存重新编译即可解决回调失败的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:54:07