const userData = { Username: username, Pool: userPool }; const cognitoUser = new AWS.CognitoIdentityServiceProvider.CognitoUser(userData); cognitoUser.getUserAttributes(function(err, result) { if (err) { alert(err); return; } console.log(result) for (i = 0; i < result.length; i++) { console.log('attribute ' + result[i].getName() + ' has value ' + result[i].getValue()); } });Tengo un tipo de usuario de campo personalizado. He establecido el permiso de lectura y escritura para el atributo personalizado. Pero en la respuesta de getUserAttributes solo obtengo atributos estándar (sub, email_verified, email). ¿Cómo puedo recuperar los atributos estándar y personalizados?
esta es mi respuesta
En primer lugar, debe asegurarse de que el cliente de la aplicación tenga permisos para leer los atributos.
Vaya a AWS Cognito, seleccione el Grupo de usuarios, luego Configuración general > Clientes de la aplicación y seleccione el Cliente de la aplicación, luego haga clic en "Establecer permisos de lectura y escritura de atributos"
Debería ver las siguientes opciones (observe que tengo el atributo "personalizado: premium" creado y permiso para leer establecido)
Luego, para ver los atributos personalizados en los resultados de cognitoUser.getUserAttributes(), debe establecer algún valor, esto se puede hacer, por ejemplo, a través de AWS CLI con el siguiente comando:
aws cognito-idp admin-update-user-attributes \ --user-pool-id userPoolId \ --username userName \ --user-attributes Name=custom:premium,Value=1En el ejemplo anterior, estoy configurando el atributo " custom:premium " en el valor 1 (obviamente, debe reemplazar userPoolId y userName con los valores correctos.
userName es el nombre de usuario del usuario con el que está conectado actualmente en su aplicación (e invocando cognitoUser.getUserAttributes())
Y aquí está el resultado de la llamada a la función después de configurar correctamente el permiso y el valor del atributo personalizado.
¡Espero eso ayude!