2016-11-24 5 views
1

Надеюсь, кто-то может помочь мне в этом, я пытался на него в течение нескольких дней. Я создаю приложение для Android и интегрирую логин Amazon Cognito. Я хочу создать пользователей в качестве администратора только в Amazon Cognito, используя панель администратора. При этом одним из требований является то, что пользователи меняют свой пароль. В CognitoUserPoolSignInProvider, который анонимный класс, для аутентификации пользователей с новыми паролями я иметь следующий код в анонимном классе:AWS cognito новый пароль продолжение - Android

@Override 
    public void authenticationChallenge(final ChallengeContinuation continuation) { 

     if ("NEW_PASSWORD_REQUIRED".equals(continuation.getChallengeName())) { 
      NewPasswordContinuation newPasswordContinuation = (NewPasswordContinuation) continuation; 
      newPasswordContinuation.setPassword("users new password goes here"); 
      continuation.continueTask(); 
     } 

    } 

У меня есть отдельный класс Activity под названием ChangePassword. Это связано с пользовательским интерфейсом и получает вход в текстовое поле редактирования от пользователя.

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_change_password); 


     password = (EditText) findViewById(R.id.newPassword); 
     submit = (Button) findViewById(R.id.submit); 

     String pass = password.getText().toString(); 

Как я могу ввести пользователей в анонимный класс, чтобы установить новый пароль? Любая помощь с благодарностью

ответ

0

Чтобы получить пароль пользователя, вам нужно использовать обратный вызов кнопки. Когда ваш код будет написан сейчас, пароль будет установлен на пустую строку (или что-то еще в поле EditText на момент создания).

Начните с этого:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_change_password); 
    final EditText password = (EditText) findViewById(R.id.newPassword); 
    Button submit = (Button) findViewById(R.id.submit); 
    submit.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String pass = password.getText().toString(); 
     } 
    }); 
} 

После того как вы настройки действий кнопки щелчка, создать экземпляр класса, который переопределяет метод authenticationChallenge. Передайте этот класс соответствующему классу AWS для аутентификации. Что-то вроде этого:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_change_password); 
    final EditText password = (EditText) findViewById(R.id.newPassword); 
    Button submit = (Button) findViewById(R.id.submit); 
    submit.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String pass = password.getText().toString(); 
      AuthenticationHandler h = new AuthenticationHandler() { 
       @Override 
       public void onSuccess(CognitoUserSession cognitoUserSession, CognitoDevice cognitoDevice) { } 
       @Override 
       public void getAuthenticationDetails(AuthenticationContinuation authenticationContinuation, String s) { } 
       @Override 
       public void getMFACode(MultiFactorAuthenticationContinuation multiFactorAuthenticationContinuation) { } 
       @Override 
       public void authenticationChallenge(ChallengeContinuation continuation) { 
        if ("NEW_PASSWORD_REQUIRED".equals(continuation.getChallengeName())) { 
         NewPasswordContinuation newPasswordContinuation = (NewPasswordContinuation) continuation; 
         newPasswordContinuation.setPassword(pass); 
         continuation.continueTask(); 
        } 
       } 
       @Override 
       public void onFailure(Exception e) { } 
      }; 
      CognitoUserPool pool = new CognitoUserPool(getApplicationContext(), "poolId", "clientId", "clientSecret", Regions.US_WEST_2); 
      pool.getUser("userId").getSession(h); 
     } 
    }); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^