AWS Cognito切换用户到联合帐户

时间:2018-02-05 12:45:47

标签: facebook amazon-web-services aws-cognito

我希望允许用户使用用户池标识(电子邮件+密码)或Facebook联合身份进行注册。

但我也希望他们以后可以切换:如果他们最初没有使用Facebook注册就添加Facebook联盟,或者如果他们最初使用Facebook注册,则从他们的帐户中删除Facebook链接。< / p>

这可能吗?

提前致谢!

1 个答案:

答案 0 :(得分:3)

是的,确实如此。我假设Facebook作为IdP直接添加到Userpool。

将您的查询拆分为两部分:

<强> 1。用户使用用户名&amp;密码。后来,他想把他的Facebook账号链接
这很简单。在您的界面中提供一个选项,并使用AdminLinkProviderForUser API将Facebook / Google帐户与用户相关联。现在,当用户下次使用此Facebook / Google帐户登录时,Cognito会将其视为本机用户&amp;为此生成令牌。当然,Facebook信息将在身份声明中提及。如果用户希望稍后删除此Facebook / Google链接,则可以使用AdminDisableProviderForUser API调用。

<强> 2。用户使用Facebook注册
这有点棘手,因为Facebook登录会自动在您的Userpool中创建状态为EXTERNAL_PROVIDER的用户(与具有CONFIRMED状态的本机用户不同)。顾名思义,此用户只能使用相关的外部提供商登录 - 在这种情况下是Facebook。如果用户想要使用用户名密码登录,则必须使用SignUp API或AdminCreateUser API创建新帐户。此外,此帐户无法使用AdminLinkProviderForUser链接到以前的Facebook帐户,因为先决条件是Userpool中不应存在具有相同详细信息(电子邮件等)的Facebook用户。但此时,我们有一个自动创建的Facebook用户,状态为EXTERNAL_PROVIDER。

因此,简而言之,您必须 - 使用SignUp或AdminCreateUser API创建新用户,删除自动创建的Facebook用户&amp;最后如案例1中所述链接Facebook帐户。