signInWithTwitter method
Sign into Firebase by logging into 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;
}