так что я работаю с aws cognito, и я немного смущен тем, как получить пароль?Как получить пароль от aws cognito - Android?
Если пользователь вводит пароль в текст редактирования, как я могу получить пароль, который пользователь ввел при регистрации, поэтому я могу сравнить пароль, с которым они вошли, с паролем, зарегистрированным?
Вот код, я должен был зарегистрировать пользователя:
userPool.signUpInBackground(username_ET.getText().toString(), password_ET.getText().toString(), userAttributes, null, signupCallback);
А вот код я использовал войти в систему:
private AuthenticationHandler authenticationHandler = new AuthenticationHandler()
{
@Override
public void onSuccess(CognitoUserSession userSession, CognitoDevice newDevice)
{
Log.d(COGNITO_LOGIN,"Login success I think?!");
cognitoUser.getDetailsInBackground(getDetailsHandler);
//Here i need to compare passwords before i can move on.
}
@Override
public void getAuthenticationDetails(AuthenticationContinuation authenticationContinuation, String userId)
{
Log.d(COGNITO_LOGIN,passwordET.getText().toString());
// The API needs user sign-in credentials to continue
AuthenticationDetails authenticationDetails = new AuthenticationDetails(userId, passwordET.getText().toString(), null);
// Pass the user sign-in credentials to the continuation
authenticationContinuation.setAuthenticationDetails(authenticationDetails);
// Allow the sign-in to continue
authenticationContinuation.continueTask();
}
@Override
public void getMFACode(MultiFactorAuthenticationContinuation multiFactorAuthenticationContinuation) {
// Multi-factor authentication is required; get the verification code from user
multiFactorAuthenticationContinuation.setMfaCode("verificationCode");
// Allow the sign-in process to continue
multiFactorAuthenticationContinuation.continueTask();
}
@Override
public void authenticationChallenge(ChallengeContinuation continuation) {
}
@Override
public void onFailure(Exception exception)
{
// Sign-in failed, check exception for the cause
Log.d(COGNITO_LOGIN,"Login failed!");
Log.d(COGNITO_LOGIN,exception.getMessage());
exceptionMessage(exception.getMessage());
}
};
cognitoUser.getSessionInBackground(authenticationHandler);
С обработчика аутентификации, мне нужно только пройти в правильном имени пользователя (или userID), чтобы запустить onSuccess. Пароль даже не требуется. Поэтому я смущен, когда пользователь должен ввести правильный пароль для входа в систему.
Я не уверен, что понимаю. Вы указываете пароль в коде, который вы только что опубликовали. Когда вы создаете AuthenticationDetails и добавляете их в продолжение. Так в чем именно заключается ваш вопрос? – doorstuck
@doorstuck Да, я указал пароль, но оператор журнала в 'getgetAuthenticationDetails' не запускается. и когда я ввожу неверный пароль, он регистрируется в любом случае – TheQ
попробуйте вызвать или переустановить приложение. Тогда у него нет учетных данных, и он будет запрашивать пароль с помощью метода getAuthenticationDetails. – doorstuck