繁体   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