簡體   English   中英

AWS Cognito新密碼延續-Android

[英]AWS cognito new password continuation - Android

我已經嘗試了好幾天,希望有人可以對此提供幫助。我正在構建一個Android應用程序並集成Amazon Cognito登錄。 我想僅使用管理面板在Amazon Cognito中以管理員身份創建用戶。 這樣做時,一項要求是用戶更改其密碼。 在作為匿名類的CognitoUserPoolSignInProvider內,為了使用新密碼對用戶進行身份驗證,我在匿名類中具有以下代碼:

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

我如何讓用戶輸入匿名類以設置新密碼? 任何幫助深表感謝

您需要使用按鈕單擊回調來輸入用戶密碼。 現在編寫代碼時,密碼將設置為空字符串(或創建時在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);
        }
    });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM