signInWithPopup method

Future<UserCredential> signInWithPopup(
  1. dynamic provider
)

Signs in using a popup window.

provider The authentication provider (e.g. GoogleAuthProvider).

Opens popup for provider sign in.

Returns a Future containing the UserCredential.

Example:

UserCredential credential = await auth.signInWithPopup(GoogleAuthProvider());

Implementation

Future<UserCredential> signInWithPopup(dynamic provider) async {
  await _initFuture;
  dynamic res = await this._authHelper.signInWithBrowserHelper(provider);
  final authnToken = null;

  final access_token = IdTokenResult(token: res["access_token"]);
  final refresh_token = res["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;

  if (provider is GoogleAuthProvider) {
    userCred = UserCredential(
      user: user,
      credential: GoogleAuthProvider.credential(
        accessToken: access_token.token,
        idToken: authnToken,
      ),
    );
  } else if (provider is FacebookAuthProvider) {
    userCred = UserCredential(
      user: user,
      credential: FacebookAuthProvider.credential(
        accessToken: access_token.token,
        idToken: authnToken,
      ),
    );
  } else if (provider is GithubAuthProvider) {
    userCred = UserCredential(
      user: user,
      credential: GithubAuthProvider.credential(
        accessToken: access_token.token,
        idToken: authnToken,
      ),
    );
  } else if (provider is SAMLAuthProvider || provider is OAuthProvider) {
    userCred = UserCredential(
      user: user,
      credential: provider.credential(
        accessToken: access_token.token,
        idToken: authnToken,
      ),
    );
  } else if (provider is IDCSAuthProvider) {
    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;
}