web-dev-qa-db-ja.com

AWS Cognitoサインアップフォームでカスタム属性を取得することは可能ですか?

私は、アカウントリンクを実装するAlexaスキルを構築しています。ユーザーが私のスキルを使用する場合、Alexaアプリを使用してサインインする必要があります。

認証UIはAmazon Cognitoによってセットアップおよび管理されるため、Alexaアプリケーション用に独自のサインインおよびサインアップUIをホストする必要はありません。

Cognitoのユーザープールには、2つの標準属性と1つのカスタム属性があります。

サインアップフォーム(Cognitoがホスト)には、標準属性のテキストフィールドが含まれますが、カスタム属性は含まれません。すべての属性(標準およびカスタム)のテキストフィールドが必要です。これを許可する方法を示すドキュメントは見つかりませんでした。どうすればいいのですか?

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

5
thedreamsaver

私も興味を持っていましたが、Amazon cognitoがホストするログインWebページを使用することは不可能だと思います。 Amazon Cognitoガイドでこの情報を見つけました: https://docs.aws.Amazon.com/en_us/cognito/latest/developerguide/cognito-user-pools-app-integration.html

このドキュメントの終わりに、私は見つけました:

Amazon CognitoがホストするサインインWebページは、カスタム認証フローをサポートしていません。

2
calabrone

私が間違っていない場合は、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 protected]'
};

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.')
});
1
Dawid K.