signInWithFacebook method
Sign into Firebase by logging into Facebook
Implementation
Future<bool> signInWithFacebook({
List<String>? permissions,
void Function(User? user)? listener,
bool? silently,
}) async {
//
if (facebookAuth == null) {
return false;
}
final fbAuth = facebookAuth!;
silently ??= false;
String? token;
AccessToken? access;
try {
access = await fbAuth.accessToken;
} catch (ex) {
setError(ex);
}
token = access?.token ?? '';
if (token.isEmpty && !silently) {
//
permissions ??= _permissions;
if (permissions.isEmpty) {
permissions = ['email'];
}
LoginResult result;
try {
result = await fbAuth.login(permissions: permissions);
if (result.status == LoginStatus.success) {
//
token = result.accessToken?.token ?? '';
} else if (result.status == LoginStatus.cancelled) {
//
token = '';
} else if (result.status == LoginStatus.failed) {
//
token = '';
setError(Exception(result.message));
}
} catch (ex) {
token = '';
setError(ex);
}
}
var signIn = false;
if (token.isNotEmpty) {
// No need this is done in signInWithCredential
_accessToken = token;
final AuthCredential credential = FacebookAuthProvider.credential(token);
signIn = await signInWithCredential(
credential: credential, listener: listener);
}
return signIn;
}