2016-11-24 18 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(); 
     } 

    } 

私はChangePasswordと呼ばれる別のActivityクラスを持っています。これはユーザインターフェイスにリンクし、ユーザからの編集テキストボックスに入力を取得します。

@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); 
     } 
    }); 
} 
関連する問題