signInWithTwitter method

Future<bool> signInWithTwitter({
  1. String? key,
  2. String? secret,
  3. void listener(
    1. User? user
    )?,
  4. bool silently = false,
  5. bool forceLogin = false,
  6. bool suppressAsserts = false,
})

Sign into Firebase by logging into Twitter

https://pub.dev/packages/flutter_twitter

Implementation

Future<bool> signInWithTwitter({
  String? key,
  String? secret,
  void Function(User? user)? listener,
  bool silently = false,
  bool forceLogin = false,
  bool suppressAsserts = false,
}) async {
  key ??= _key ?? '';
  secret ??= _secret ?? '';

  if (!suppressAsserts) {
    assert(
        key.isNotEmpty, 'Must pass an key to signInWithTwitter() function!');
    assert(secret.isNotEmpty,
        'Must pass the secret to signInWithTwitter() function!');
  }

  if (key.isEmpty || secret.isEmpty) {
    return false;
  }

  String? token;
  String? tokenSecret = '';
  var signIn = false;
//    bool inSession;

  // // Disconnect from Twitter first if logged in.
  // await _twitterLogin?.logOut();
  _twitterLogin = null;

  try {
    // Instantiate a third-party plugin.
    _twitterLogin = TwitterLogin(
      apiKey: key,
      apiSecretKey: secret,
      redirectURI: 'twittersdk://',
    );
  } catch (ex) {
    setError(ex);
  }

  if (_twitterLogin == null) {
    return false;
  }

  // try {
  //   inSession = await _twitterLogin.isSessionActive;
  // } catch (ex) {
  //   inSession = false;
  //   setError(ex);
  // }
  //
  // /// Don't bother logging in if the session is already active.
  // if (inSession || silently) {
  //   TwitterSession session;
  //   try {
  //     session = await _twitterLogin.currentSession;
  //   } catch (ex) {
  //     session = null;
  //     setError(ex);
  //   }
  //   token = session?.token ?? '';
  //   tokenSecret = session?.secret ?? '';
  // } else {
  AuthResult result;
  try {
    result = await _twitterLogin!.login(forceLogin: forceLogin);
    switch (result.status) {
      case TwitterLoginStatus.loggedIn:
        token = result.authToken;
        tokenSecret = result.authTokenSecret;
        break;
      case TwitterLoginStatus.cancelledByUser:
        token = '';
        break;
      case TwitterLoginStatus.error:
        token = '';
        setError(Exception(result.errorMessage));
        break;
      default:
        token = '';
    }
  } catch (ex) {
    token = '';
    setError(ex);
  }
  //   }

  /// Sign into Firebase
  if (token!.isNotEmpty) {
    _accessToken = token;
    final AuthCredential credential = TwitterAuthProvider.credential(
        accessToken: token, secret: tokenSecret!);
    signIn = await signInWithCredential(
        credential: credential, listener: listener);
  }
  return signIn;
}