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

时间:2018-01-08 16:46:15

标签: oauth-2.0 facebook-login aws-cognito

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

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

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

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

2 个答案:

答案 0 :(得分:1)

目前,Cognito用户池无法实现这一目标。

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

我怀疑这封电子邮件是可以在此之后通过API检索的,因此您可以通过Cognito用户池trigger获得一些运气,以便检索电子邮件并将其填入后验证中(如果它已丢失)。 / p>

除此之外,除了使电子邮件地址可选,然后围绕此设计客户体验之外,您还可以做很多事情。

答案 1 :(得分:1)

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

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

  

请注意,即使您申请电子邮件权限,也不能保证   你会得到一个电子邮件地址。例如,如果有人注册了   Facebook上有电话号码而不是电子邮件地址,电子邮件   字段可能是空的。

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

自行实施。