signInWithPopup method
- 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;
}