当需要电子邮件属性但Facebook不提供电子邮件属性时,用户如何通过Facebook注册Cognio用户池?



我的 AWS Cognito 池将电子邮件作为必需属性。注册我的应用的所有用户都必须提供其电子邮件。

我最近将 Facebook 作为身份提供商添加到我的用户池中。

问题在于Facebook并不总是提供电子邮件,在这种情况下,Cognito会将新用户重定向到一个错误页面,上面写着"电子邮件是必需的"。

我想提示用户输入他/她的电子邮件,然后继续注册过程,而不仅仅是以错误结束它。有什么办法可以做到这一点吗?

这目前在 Cognito 用户池中根本无法实现。

我在与客户合作时遇到了同样的例子,即使同意适当的范围,Facebook也不会在OpenID令牌中提供它。

我怀疑电子邮件可以通过 API 检索,因此您可能有一些运气,可以使用 Cognito 用户池触发器来检索电子邮件并在身份验证后将其填充(如果丢失(。

否则,除了将电子邮件地址设置为可选,然后围绕此设计客户体验之外,您无能为力。

如果您在

Facebook令牌范围内设置了"电子邮件",Facebook将提供电子邮件地址(如果有(。但是,Facebook本身并不总是为用户提供电子邮件地址。

https://developers.facebook.com/docs/facebook-login/permissions/#reference-email

请注意,即使您请求电子邮件权限,也不能保证 您将获得一个电子邮件地址。例如,如果有人注册了 Facebook使用电话号码而不是电子邮件地址,电子邮件 字段可能为空。

在这种情况下,我认为您要么必须接受当前的 Cognito 行为,要么将电子邮件设为可选,但使用 Cognito 身份验证后 Lambda 触发器自己有效地强制执行它

最新更新