Я новичок в java, AWSMobileClient и Amplify. Я пытаюсь использовать AWSMobileClient SignIn для моего приложения. Я использую следующий код, но когда я отлаживаю и пытаюсь войти, он выходит из метода и не вводит оператор switch. Я могу видеть в выводе консоли, что вызов был получен AWS, поскольку он генерирует исключение UserNotConfirmed.
У меня есть зарегистрированные пользователи, которые ожидают подтверждения. Мой поток таков, что когда они пытаются войти в систему, они должны быть перенаправлены на «AuthenticateActivity», но кажется, что код просто пропускает все это и остается на экране входа в систему.
По сути, кажется, что метод onResult не захватывает ответ AWS.
try {
AWSMobileClient.getInstance().signIn(email, password, null, new Callback<SignInResult>() {
@Override
public void onResult(final SignInResult signInResult) {
String res = signInResult.getSignInState().name();
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.d(TAG, "Sign-in callback state: " + signInResult.getSignInState());
switch (signInResult.getSignInState()) {
case DONE:
Toast.makeText(LoginActivity.this, "Sign-in done.", Toast.LENGTH_SHORT).show();
finish();
startActivity(new Intent(LoginActivity.this, ProfileActivity.class));
break;
case SMS_MFA:
Toast.makeText(LoginActivity.this, "Please confirm sign-in with SMS.", Toast.LENGTH_SHORT).show();
break;
case PASSWORD_VERIFIER:
startActivity(new Intent(LoginActivity.this, AuthenticationActivity.class));
break;
case CUSTOM_CHALLENGE:
startActivity(new Intent(LoginActivity.this, AuthenticationActivity.class));
break;
case DEVICE_SRP_AUTH:
break;
case DEVICE_PASSWORD_VERIFIER:
break;
case ADMIN_NO_SRP_AUTH:
break;
case NEW_PASSWORD_REQUIRED:
Toast.makeText(LoginActivity.this, "Please confirm sign-in with new password.", Toast.LENGTH_SHORT).show();
break;
case UNKNOWN:
startActivity(new Intent(LoginActivity.this, AuthenticationActivity.class));
break;
default:
startActivity(new Intent(LoginActivity.this, AuthenticationActivity.class));
//Toast.makeText(LoginActivity.this, "Unsupported sign-in confirmation: " + signInResult.getSignInState(), Toast.LENGTH_SHORT).show();
break;
}
}
});
}
@Override
public void onError(Exception e) {
Log.e(TAG, "Sign-in error", e);
}
});
}
catch (UserNotConfirmedException e) {
Toast.makeText(LoginActivity.this, "Please confirm sign-in with SMS.", Toast.LENGTH_SHORT).show();
}
} else {
//progressBar.setVisibility(View.GONE);
}