signInWithGoogle function

Future<Map> signInWithGoogle()

Implementation

Future<Map> signInWithGoogle() async {
  final GoogleSignInAccount? googleSignInAccount = await googleSignIn.signIn();

  final GoogleSignInAuthentication googleSignInAuthentication =
      await googleSignInAccount!.authentication;

  final AuthCredential credential = GoogleAuthProvider.credential(
    accessToken: googleSignInAuthentication.accessToken,
    idToken: googleSignInAuthentication.idToken,
  );

  final UserCredential authResult =
      await _auth.signInWithCredential(credential);
  final User? user = authResult.user;

  assert(!user!.isAnonymous);
  assert(await user!.getIdToken() != null);

  final User? currentUser = _auth.currentUser;
  assert(user!.uid == currentUser!.uid);
  var userDetails = {
    "id": user!.uid,
    "name": user.displayName,
    "email": user.email,
    "image": user.photoURL,
    "lastSignin": user.metadata.lastSignInTime,
    "createdate": user.metadata.creationTime,
    "token": await user.getIdToken().then((value) => value)
  };

  return userDetails;
}