in aws-auth-cognito/src/main/java/com/amplifyframework/auth/cognito/AWSCognitoAuthPlugin.java [1169:1242]
private void signInWithWebUIHelper(
@Nullable AuthProvider authProvider,
@NonNull Activity callingActivity,
@NonNull AuthWebUISignInOptions options,
@NonNull Consumer<AuthSignInResult> onSuccess,
@NonNull Consumer<AuthException> onException
) {
HostedUIOptions.Builder optionsBuilder = HostedUIOptions.builder();
SignInUIOptions.Builder signInUIOptionsBuilder = SignInUIOptions.builder();
if (options != null) {
if (options.getScopes() != null) {
optionsBuilder.scopes(options.getScopes().toArray(new String[options.getScopes().size()]));
}
if (!options.getSignInQueryParameters().isEmpty()) {
optionsBuilder.signInQueryParameters(options.getSignInQueryParameters());
}
if (!options.getSignOutQueryParameters().isEmpty()) {
optionsBuilder.signOutQueryParameters(options.getSignOutQueryParameters());
}
if (!options.getTokenQueryParameters().isEmpty()) {
optionsBuilder.tokenQueryParameters(options.getTokenQueryParameters());
}
if (options instanceof AWSCognitoAuthWebUISignInOptions) {
AWSCognitoAuthWebUISignInOptions cognitoOptions = (AWSCognitoAuthWebUISignInOptions) options;
optionsBuilder.idpIdentifier(cognitoOptions.getIdpIdentifier())
.federationProviderName(cognitoOptions.getFederationProviderName());
signInUIOptionsBuilder.browserPackage(cognitoOptions.getBrowserPackage());
}
if (authProvider != null) {
optionsBuilder.identityProvider(AuthProviderConverter.getIdentityProvider(authProvider));
}
}
SignInUIOptions signInUIOptions = signInUIOptionsBuilder
.hostedUIOptions(optionsBuilder.build())
.build();
awsMobileClient.showSignIn(callingActivity, signInUIOptions, new Callback<UserStateDetails>() {
@Override
public void onResult(UserStateDetails details) {
fetchAndSetUserId(() -> onSuccess.accept(
new AuthSignInResult(
UserState.SIGNED_IN.equals(details.getUserState()),
new AuthNextSignInStep(
AuthSignInStep.DONE,
details.getDetails(),
null
)
)
));
}
@Override
public void onError(Exception error) {
if (error instanceof AuthNavigationException) {
onException.accept(new AuthException.UserCancelledException(
"The user cancelled the sign-in attempt, so it did not complete.",
error, "To recover: catch this error, and show the sign-in screen again."
));
} else {
onException.accept(new AuthException(
"Sign-in with web UI failed", error,
"See attached exception for more details"
));
}
}
});
}