2016-11-24 1 views
1

누군가가이 문제에 도움을 주길 바래, 며칠 동안 노력하고 있습니다. Android 앱을 만들고 Amazon Cognito 로그인을 통합하고 있습니다. 관리자 패널을 사용하여 Amazon Cognito에서만 관리자로 사용자를 만들고 싶습니다. 그렇게 할 때 사용자가 자신의 암호를 변경해야한다는 요구 사항이 있습니다.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(); 
     } 

    } 

내가 ChangePassword라는 별도의 작업 클래스가 있습니다 : 나는 익명 클래스에 다음 코드를 새 암호로 사용자를 인증하기 위해 익명 클래스 인 CognitoUserPoolSignInProvider 내. 이것은 사용자 인터페이스에 연결하고 사용자의 편집 텍스트 상자에 입력을 가져옵니다.

@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); 
     } 
    }); 
}