signInWithFacebook method
Future<User?>
signInWithFacebook(
{ - dynamic onError(
- String
)?,
- dynamic onSignInSuccessful(
- User
)?,
})
Implementation
Future<User?> signInWithFacebook({
Function(String)? onError,
Function(User)? onSignInSuccessful,
}) async {
if (Foundation.kIsWeb) {
//The WebFlow
FacebookAuthProvider facebookProvider = FacebookAuthProvider();
facebookProvider.addScope('email');
facebookProvider.setCustomParameters({
'display': 'popup',
});
// Once signed in, return the UserCredential
User? user;
try {
UserCredential userCred =
await FirebaseAuth.instance.signInWithPopup(facebookProvider);
user = userCred.user;
} catch (e) {
if (onError != null) onError(e.toString());
print("FBError: $e");
}
if (user != null) {
if (onSignInSuccessful != null) onSignInSuccessful(user);
//======================HOT RESTART BUG BYPASS============================
await HotRestartBypassMechanism.saveLoginState(true);
//======================HOT RESTART BUG BYPASS============================
}
return user;
} else {
//The NativeFlow
User? user;
try {
final LoginResult result = await FacebookAuth.instance.login();
final facebookAuthCredential =
FacebookAuthProvider.credential(result.accessToken!.token);
UserCredential userCred = await FirebaseAuth.instance
.signInWithCredential(facebookAuthCredential);
user = userCred.user;
if (user != null) {
if (onSignInSuccessful != null) onSignInSuccessful(user);
}
} catch (e) {
if (onError != null) onError(e.toString());
print("FBError: $e");
}
return user;
}
}