AWSMobileClient signIn onResult не входит в оператор switch или возвращает signInResult - PullRequest
0 голосов
/ 06 марта 2020

Я новичок в 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);
    }
...