Flutter集成twitter_login 4.0.1+Firebase实现Twitter登录跳转卡住问题
Twitter登录跳转卡住排查与修复方案
常见问题与修复方式
- Deep Link未配置:你代码中使用的回调地址为
Doyen://,需要分别在双端原生工程配置跳转规则,否则系统无法识别该回调、无法跳转回应用:- iOS端:打开
ios/Runner/Info.plist,新增如下配置:- 在
LSApplicationQueriesSchemes数组下添加两个子项:twitter、twitterauth - 新增
CFBundleURLTypes节点,配置CFBundleURLSchemes为Doyen
- 在
- Android端:打开
android/app/src/main/AndroidManifest.xml,在MainActivity节点下新增intent-filter:<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="Doyen" /> </intent-filter>
- iOS端:打开
- Twitter后台配置错误:登录Twitter开发者后台,进入对应应用的设置页,确认:
- 3-legged OAuth开关已开启
- 回调地址栏已添加
Doyen://,和代码配置完全一致(大小写敏感)
- 代码逻辑错误:现有代码未校验登录状态、异步方法未加await,会导致流程异常,修正后参考代码如下:
import 'dart:developer'; import 'package:firebase_auth/firebase_auth.dart'; import 'package:flutter/cupertino.dart'; import 'package:twitter_login/twitter_login.dart'; class TwitterLoginController with ChangeNotifier { Future<void> signInWithTwitter() async { final twitterLogin = TwitterLogin( apiKey: "替换为你重置后的API Key", apiSecretKey: "替换为你重置后的API Secret Key", redirectURI: "Doyen://", ); final loginResult = await twitterLogin.login(); switch (loginResult.status) { case TwitterLoginStatus.loggedIn: final credential = TwitterAuthProvider.credential( accessToken: loginResult.authToken!, secret: loginResult.authTokenSecret!, ); await FirebaseAuth.instance.signInWithCredential(credential); log("Twitter登录完成"); break; case TwitterLoginStatus.cancelledByUser: log("用户取消登录"); break; case TwitterLoginStatus.error: log("登录失败:${loginResult.errorMessage}"); break; default: break; } return; } }
额外提示
你贴出的代码中包含明文的Twitter API Key和Secret,已经泄露,请立刻前往Twitter开发者后台重置密钥,避免被盗用产生风险。
内容的提问来源于stack exchange,提问作者Zameer Haider
相关产品推荐
相关产品推荐

