signInWithFacebook method
Implementation
@override
Future<Response<Credential>> signInWithFacebook() async {
final response = Response<Credential>();
try {
final token = await facebookAuth.accessToken;
LoginResult? result;
result = token == null
? await facebookAuth.login(permissions: ['public_profile', 'email'])
: null;
final status = result?.status ?? LoginStatus.failed;
if (token != null || status == LoginStatus.success) {
final accessToken = result?.accessToken ?? token;
if (accessToken != null) {
final credential = FacebookAuthProvider.credential(accessToken.token);
final fbData = await facebookAuth.getUserData();
return response.withData(Credential.fromMap(fbData).copy(
accessToken: accessToken.token,
credential: credential,
));
} else {
return response.withException(
'Token not valid!',
status: Status.error,
);
}
} else {
return response.withException('Token not valid!', status: Status.error);
}
} on FirebaseAuthException catch (_) {
return response.withException(_.message, status: Status.failure);
}
}