signInWithGmail method
Signs in using Google authentication.
Implementation
@override
Future<Either<AuthFailure, ExaAuthUser?>> signInWithGmail() async {
try {
final googleUser = await GoogleSignIn().signIn();
if (googleUser == null) {
return left(_resolveException(
exception: null,
stackTrace: null,
locale: 'signInWithGmail',
sigInType: SigInType.google));
}
final googleAuth = await googleUser.authentication;
final credential = GoogleAuthProvider.credential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
if (ExaAuth.onlyCredential) {
return right(ExaAuthUser.withCredential(credential: credential));
} else {
final userCredential = await _signInWithCredential(credential);
return right(_resolveUser(firebaseUser: userCredential.user));
}
} catch (exception, stackTrace) {
return left(_resolveException(
exception: exception,
stackTrace: stackTrace,
locale: 'signInWithGmail',
sigInType: SigInType.google));
}
}