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

How can users sign up to a Cognio User Pool through Facebook when email attribute is required but Facebook doesn't provide it?

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

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

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

我想提示用户输入 his/her 电子邮件,然后继续注册过程,而不是仅仅以错误结束。有什么办法吗?

Cognito 用户池目前无法做到这一点。

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

我怀疑可以通过此后的 API 检索电子邮件,因此您可能会幸运地使用 Cognito 用户池 trigger 检索电子邮件并将其填充到 post-如果丢失则进行身份验证。

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

如果您在 Facebook 令牌范围内设置了 'Email',Facebook 将提供电子邮件地址(如果有的话)。然而,Facebook 本身并不总是有用户的电子邮件地址

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

Note, even if you request the email permission it is not guaranteed you will get an email address. For example, if someone signed up for Facebook with a phone number instead of an email address, the email field may be empty.

在这种情况下,我认为您要么必须忍受当前的 Cognito 行为,要么将电子邮件设为可选,但您可以通过 Cognito Post-Authentication Lambda trigger

有效地强制执行