В настоящее время пользовательские атрибуты плохо настраиваются AWS.Например, вы не можете найти настраиваемое поле, введенное вами в консоли, в пользовательских объектах, возвращаемых различными API JS SDK, если у вас нет значения в нем.(Я установил флажки чтения / записи для пользовательских атрибутов.) Для этого необходимо ввести значение с помощью интерфейса командной строки, что нереально для реальных приложений, предназначенных для добавления пользователями данных с помощью графического интерфейса.
Кроме того, API-интерфейс adminCreateUser гласит: «Для пользовательских атрибутов необходимо добавить префикс custom: к имени атрибута.»
Таким образом, очевидно, что вы должны иметь возможность добавить настраиваемое поле при созданиино удачи в этом.По крайней мере, в JavaScript я не нашел способа, чтобы он принимал пользовательский: что угодно, не нарушая сборки приложения.Я не могу найти способ использовать эти поля с любым API, потому что JS отвергает custom:
Кто-нибудь нашел обходной путь / хак для решения этой проблемы?
Это не работает в API AdminCreateUser с пользовательским: но это нормально с другими:
const createUserParams = {
UserPoolId: this.cognitoUserPoolID,
Username: enteredData.user_name,
DesiredDeliveryMediums: ['EMAIL'],
ForceAliasCreation: false,
MessageAction: 'SUPPRESS',
UserAttributes: [
{
Name: 'custom:user_id',
Value: enteredData.custom:user_id
},
{
Name: 'given_name',
Value: enteredData.given_name
}, ...
Вызов списка API пользователя дает сообщение об ошибке в консоли.
Error in getCognitoUsers: Error: One or more requested attributes do not exist.
Для API listUsers требуются следующие параметры:
return new Observable(observer => {
const listUsersParams = {
AttributesToGet: [
'custom:user_id',
'given_name',
'family_name',
'locale',
'email',
],
// Filter: '',
UserPoolId: this.cognitoApisService.cognitoUserPoolID
};
const cognitoidentityserviceprovider = new CognitoIdentityServiceProvider(AWSconfig);
cognitoidentityserviceprovider.listUsers(listUsersParams, function (err, userData) {