thedreamsaver
thedreamsaver

Reputation: 1384

Is it possible to get custom attributes on AWS Cognito sign up form?

I am building an Alexa Skill that will implement Account Linking. When a user uses my skill, they would have to use the Alexa App to sign-in.

The Authentication UI is set up and managed by Amazon Cognito so that I don’t have to host my own sign-in and sign-up UI for my Alexa application.

My User Pool in Cognito has two standard and one custom attribute.

The sign-up form (hosted by Cognito) includes text-fields for the standard attributes, but not for the custom attributes. I want text-fields for all attributes (standard and custom). I couldn't find any documentation that shows how to allow this. How do I do it?

I have two standard and one custom attributes. I need all of them from user.

But the sign up form is not showing the input field for custom attribute

Upvotes: 11

Views: 16811

Answers (3)

Isuru
Isuru

Reputation: 722

According to this documentation, this is not possible. Excerpt from the documentation:

Each custom attribute has the following characteristics:

  • You can't require that users provide a value for the attribute.
  • ...

Upvotes: 0

calabrone
calabrone

Reputation: 126

I was interested too, but i think is not possible using the Login Web Page hosted by Amazon cognito. I've found this information on Amazon Cognito guide: https://docs.aws.amazon.com/en_us/cognito/latest/developerguide/cognito-user-pools-app-integration.html

At the end of this document i've found:

Note

The Amazon Cognito hosted sign-in web page does not support the custom authentication flow.

Upvotes: 5

Dawid Kisielewski
Dawid Kisielewski

Reputation: 829

If i am not mistaken you need to add custom:<YOUR_ATTRIBUTE_NAME>

var poolData = {
    UserPoolId : <POOL_ID>,
    ClientId : <CLIENT_ID>,
};
var userPool = new AWSCognito.CognitoUserPool(poolData);

var attributeList = [];

var dataEmail = {
    Name : 'email',
    Value : 'email@mydomain.com'
};

var dataPhoneNumber = {
    Name : 'phone_number',
    Value : '+15555555555'
};
var grandMaName = {
    Name : 'custom:grandMaName',
    Value : 'granny'
};
var attributeEmail = new AWSCognito.CognitoUserAttribute(dataEmail);
var attributePhoneNumber = new AWSCognito.CognitoUserAttribute(dataPhoneNumber);
var attributeGrandMaName = new AWSCognito.CognitoUserAttribute(grandMaName);
attributeList.push(attributeEmail);
attributeList.push(attributePhoneNumber);
attributeList.push(grandMaName);

userPool.signUp(userData.Username, userData.Password, attributeList, null, function(err, result){
    if (err) {
        console.log(err);
        return;
    }
    cognitoUser = result.user;
    console.log('user name is ' + cognitoUser.getUsername());
    console.log('Now go to Cognito console and confirm the user.')
});

Upvotes: 3

Related Questions