signInWithCredential method

Future<UserCredential> signInWithCredential(
  1. AuthCredential credential
)

Signs in using credentials.

credential The AuthCredential from provider.

Authenticates using the credential.

Returns a Future containing the UserCredential.

Example:

UserCredential credential = await auth.signInWithCredential(myCredential);

Implementation

Future<UserCredential> signInWithCredential(AuthCredential credential) async {
  await _initFuture;
  final credDetails = await _authHelper.signInWithCredentialHelper(
    client: createClient(app),
    credential: credential,
  );

  final access_token = IdTokenResult(token: credDetails["access_token"]);
  final refresh_token = credDetails["refresh_token"];
  final userDetails = await _authHelper.getUserDetails(
    accessToken: access_token,
  );

  final User user = User(
    user: userDetails,
    auth: this,
    accessToken: access_token,
    refreshToken: refresh_token,
  );
  await user.getFUSABASEToken();
  var userCred;
  final authnToken = null;

  if (credential is GoogleAuthCredential) {
    userCred = UserCredential(
      user: user,
      credential: GoogleAuthProvider.credential(
        accessToken: access_token.token,
        idToken: authnToken,
      ),
    );
  } else if (credential is FacebookAuthCredential) {
    userCred = UserCredential(
      user: user,
      credential: FacebookAuthProvider.credential(
        accessToken: access_token.token,
        idToken: authnToken,
      ),
    );
  } else if (credential is GithubAuthCredential) {
    userCred = UserCredential(
      user: user,
      credential: GithubAuthProvider.credential(
        accessToken: access_token.token,
        idToken: authnToken,
      ),
    );
  } else if (credential is IDCSAuthCredential) {
    userCred = UserCredential(
      user: user,
      credential: IDCSAuthProvider.credential(
        accessToken: access_token.token,
        idToken: authnToken,
      ),
    );
  }

  await __setCredTokens({
    "accessToken": access_token,
    "refreshToken": refresh_token,
  });
  __updateCurrentUser(user);
  return userCred;
}