Я использую последнюю версию AWS SDK для Android.
implementation 'com.amazonaws:aws-android-sdk-core:2.7.6'
implementation 'com.amazonaws:aws-android-sdk-cognito:2.7.6'
implementation 'com.amazonaws:aws-android-sdk-cognitoidentityprovider:2.7.6'
Мой обработчик аутентификации по большей части взят из их примера кода.
// create a handler for the sign-in process
private AuthenticationHandler authenticationHandler = new AuthenticationHandler() {
@Override
public void onSuccess(CognitoUserSession userSession, CognitoDevice newDevice) {
// String idToken = userSession.getIdToken().getJWTToken();
// Map<String, String> logins = new HashMap<>();
// logins.put("cognito-idp.us-east-1.amazonaws.com/" + getString(R.string.user_pool_id), idToken);
// AuthHelper.getInstance().getCredentialsProvider().setLogins(logins);
//
// new RefreshCognitoCredentials().execute();
startActivity(new Intent(LoginActivity.this, MainActivity.class));
finish();
}
@Override
public void getAuthenticationDetails(AuthenticationContinuation authenticationContinuation, String userId) {
String password = inputPassword.getText().toString();
AuthenticationDetails authenticationDetails = new AuthenticationDetails(userId, password, null);
authenticationContinuation.setAuthenticationDetails(authenticationDetails);
authenticationContinuation.continueTask();
}
@Override
public void getMFACode(MultiFactorAuthenticationContinuation continuation) {
}
@Override
public void authenticationChallenge(ChallengeContinuation continuation) {
}
@Override
public void onFailure(Exception exception) {
String error = AuthHelper.formatException(exception);
layoutUsername.setErrorEnabled(true);
layoutUsername.setError(error);
}
};
Аутентификация работает просто отлично. И кешируется как надо.
В своей активности на заставке я могу проверить CognitoUser.getCurrentUser (). GetUserId ().
А теперь, чтобы выйти:
CognitoUser.getCurrentUser().signOut()
Теперь, если я закрою приложение и открою приложение - CognitoUser.getCurrentUser (). GetUserId () по-прежнему возвращает моего ранее вошедшего в систему пользователя.
Несколько месяцев назад я выполнил реализацию AWS с 2.2. + В качестве версий sdk, и этот пример работал как ожидалось.
Примечание * Если я пытаюсь использовать CognitoUser.getCurrentUser (). GlobalSignout () - он возвращает ошибку «пользователь не аутентифицирован».
Как я могу проверить запуск приложения, если у меня есть действительный пользователь / сеанс? Я ненавижу, как AWS меняет вещи каждый день без документации или документации, которую невозможно найти.