我希望我的用户能够使用用户名+密码登录名或Facebook登录名,然后再在其中添加用户名。我应该如何设置Cognito才能使其正常工作?
当我将用户名设置为主登录选项时,由于以下原因,我无法将Facebook添加到身份提供商:
The attribute mapping is missing required attributes [birthdate, gender, name, nickname] (Service: AWSCognitoIdentityProviderService; Status Code: 400; Error Code: InvalidParameterException; Request ID: 33685466-642a-11e9-808c-db0b9bb00ea9)
是否有处理此登录问题的正确方法?
答案 0 :(得分:1)
当您使用联合身份(例如,使用Facebook,Amazon或Google登录)时,将在身份提供商(例如Facebook)上进行身份验证,然后通过导入属性在Cognito用户池中创建配置文件来自IDP。
高级身份联盟在这里详细说明:https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-identity-federation.html
在Cognito用户池中定义了必填属性后,您需要告诉Cognito如何将IDP中的属性映射到Cognito用户池属性。例如,如果您在Cognito中具有“生日”强制性属性,则需要告诉Cognito可以从Facebook的个人资料中获取该值的地方。
这是属性映射,在这里进行说明:https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-specifying-attribute-mapping.html
上述问题的解决方法是
a /可以从Cognito的强制属性列表中删除这些属性。如果您的IDP没有此信息,则可以选择此选项。 (Facebook可以共享出生日期和性别属性吗?)
b /要么定义一个属性映射,以使Cognito知道它可以在IDP(Facebook)配置文件中获取这些属性。