Cognito 用户池 - 是不是可以为 Facebook 登录创建自定义注册/登录表单?

Posted

技术标签:

【中文标题】Cognito 用户池 - 是不是可以为 Facebook 登录创建自定义注册/登录表单?【英文标题】:Cognito User Pools - Is it possible to create a custom sign up/in form for Facebook login?Cognito 用户池 - 是否可以为 Facebook 登录创建自定义注册/登录表单? 【发布时间】:2018-04-11 16:24:38 【问题描述】:

我想使用 Cognito 用户池 仅用于 Facebook 登录,这可以使用内置登录表单,但我需要使用自己的。

理论上,当涉及到自定义表单时,应该不难:从 FB 收到用户对象后,我将用户和电子邮件属性绑定到我的用户池中的属性并保存。

但是如何处理密码字段和未来的身份验证?在这里,我在旅途中失败了......

...
userPool.signUp('FoobarUser', '**password?**', attributeList, null, function(err, result)
...

在深入研究文档的同时,我尝试实现身份池(联合身份),并设法以 数据集 的形式保存用户信息,但是然后我意识到,如果可能的话,查询这些集合将是一个巨大的痛苦。

也许我没有理解这些概念,如果有人能提出一种使用 Cognito 以井井有条的方式管理 Facebook 登录的方法,我将非常感激。

【问题讨论】:

【参考方案1】:

所以这是我从您的查询中了解到的。

设置

将 Facebook 链接到用户池 应用客户端只允许 Facebook 登录,不允许其他提供商(甚至 Userpool) 登录时,您希望 Facebook 用户信息自动填充到您的用户池中 您不想使用 Cognito 的内置 UI,而是使用自己的

我的 2 美分

在您的应用客户端中,只需选择 Facebook

在您的 UI 中,有一个登录按钮。单击它应该重定向到您的用户池的authorization 端点

https://your_domain.auth.us-east-1.amazoncognito.com/oauth2/authorize?redirect_uri=https://www.example.com&response_type=token&client_id=your_appclient_id

如果您想将自己的 UI 与多个提供程序一起使用,请在客户端中允许相同,然后单击 UI 中的相应按钮(例如 Facebook),将用户重定向到授权端点,但在 URL 中附加 identity_provider

https://your_domain.auth.us-east-1.amazoncognito.com/oauth2/authorize?redirect_uri=https://www.example.com&response_type=token&client_id=your_appclient_id&identity_provider=Facebook

如果您想查看所有支持的身份提供者的名称,请使用ListIdentityProviders API 调用

这样,所有 Facebook 用户都将自动创建到您的用户池中。当然,他们的名字会像 Facebook_123jkjdwj 一样是随机的,但他们的所有详细信息都将根据您的属性映射从令牌中正确填充。另外,来自特定提供商的所有自动创建的用户都将添加到自动创建的组“Userpoolid_providername”中,例如。 us_east_1_xxxx_Facebook。

【讨论】:

顺便说一下,这个解决方案只有在用户首先授权应用程序的情况下才有效,之后它可以用于登录,而不需要内置 UI。所以我想现在除了使用 UI 没有别的办法...... :((

以上是关于Cognito 用户池 - 是不是可以为 Facebook 登录创建自定义注册/登录表单?的主要内容,如果未能解决你的问题,请参考以下文章

检查用户 phone_number 是不是已存在于 aws cognito 用户池中

同一 AWS Cognito 用户池中的多个应用程序对于同一用户来说 cognitoID 是不是相同?

如何在 AWS Cognito 用户池中为特定用户编辑用户属性?

没有密码的 AWS Cognito 用户池

如何从 Cognito 身份池提供的身份凭证访问用户数据?

Cognito用户池是否支持国际化?