Как получить пользовательские атрибуты (имя пользователя, адрес электронной почты и т.д.), Используя идентификатор идентификатора cognito
У меня есть AWS Cognito Identity Pool, который настроен с использованием Cognito User Pool в качестве поставщика проверки подлинности.
Предположим, что у меня есть идентификатор идентичности в пуле идентификаторов Cognito (например, us-east-1: XXaXcXXa-XXXX-XXXX-XXX-XXXXXXXXXXXX), где это удостоверение имеет связанный логин с пользователем в пуле пользователей Cognito.
Используя идентификатор идентификатора, как я могу получить связанные данные пользователя (адрес электронной почты, телефон, имя пользователя)?
Ответы
Ответ 1
Идентификатор идентификатора, который вы обмениваете с интеграционной службой идентификации Cognito для получения идентификатора идентификатора, и учетные данные уже имеют все пользовательские атрибуты. Вам не нужен дополнительный вызов для любой службы.
Это токен JWT, и вы можете использовать любую библиотеку на клиенте для декодирования значений. Вы можете прочитать это руководство для получения дополнительной информации о токенах, созданных пулами пользователей Cognito.
В качестве альтернативы вы также можете использовать токен доступа для вызова API GetUser, который вернет всю информацию пользователя.
Ответ 2
Я столкнулся с подобной проблемой, и после слишком большого количества царапин я не смог найти точный способ вытащить детали. Мой случай использования должен был получить детали в приложении для Android. После изучения их клиентского API-кода AWSMobile. Я нашел ниже, и это работает от меня.
Log.i(TAG, "Данные пользователя" + AWSMobileClient.getInstance(). GetUserAttributes(). ToString());
Рекомендация. Попробуйте использовать AWSMobileclient, если вы используете его для разработки Android, поскольку это новая библиотека, которая рекомендуется для разработки.
Ответ 3
Используйте этот кусок кода
GetDetailsHandler detailsHandler = new GetDetailsHandler() {
@Override
public void onSuccess(CognitoUserDetails cognitoUserDetails) {
CognitoUserAttributes cognitoUserAttributes=cognitoUserDetails.getAttributes();
stringStringHashMap=new HashMap<>();
stringStringHashMap =cognitoUserAttributes.getAttributes();
userNumber=stringStringHashMap.get("phone_number");
e1.setText(userNumber);
Log.d("Response"," Inside DEATILS HANDLER");
// Store details in the AppHandler
AppHelper.setUserDetails(cognitoUserDetails);
// Trusted devices?
handleTrustedDevice();
// e1.setText(input.getText().toString());
}
@Override
public void onFailure(Exception exception) {
closeWaitDialog();
showDialogMessage("Could not fetch user details!", AppHelper.formatException(exception), true);
}
};
private void getDetails() {
AppHelper.getPool().getUser(username).getDetailsInBackground(detailsHandler);
}
Ответ 4
console.log('username is ' + cognitoUser.getUsername());