Здесь приведен общий код, за исключением, может быть, вызова «выход».
final CognitoUser user = awsUserPool.getUser(email);
user.signOut();
user.getSessionInBackground(new AuthenticationHandler() {
@Override
public void onSuccess(CognitoUserSession userSession, CognitoDevice newDevice) { usefulfunction(); }
@Override
public void getAuthenticationDetails(AuthenticationContinuation authenticationContinuation, String userId) {
// The API needs user sign-in credentials to continue
AuthenticationDetails authenticationDetails = new AuthenticationDetails(userId, password, null);
// Pass the user sign-in credentials to the continuation
authenticationContinuation.setAuthenticationDetails(authenticationDetails);
// Allow the sign-in to continue
authenticationContinuation.continueTask();
}
@Override
public void onFailure(Exception exception) { showError(exception) }
@Override
public void getMFACode(MultiFactorAuthenticationContinuation continuation) {//empty}
@Override
public void authenticationChallenge(ChallengeContinuation continuation) {//empty}
}
Когда выполняется getSessionInBackground, он вызывает getAuthenticationDetails, затем onSuccess, а затем onFailure со следующей ошибкой:
"com.amazonaws.mobileconnectors.cognitoidentityprovider.exceptions.CognitoInternalErrorException: проверка подлинности завершилась ошибкой из-за внутренней ошибки: проблема PASSWORD_VERIFIER обнаружена не в начале потока проверки подлинности "
Если удалить вызов signOut, код работает нормально.
Итак, мой вопрос, почему?Еще вопрос, как заставить AWS запрашивать пароль?