我的AWS Cognito Pool将电子邮件作为必需属性。注册我的应用的所有用户都必须提供他们的电子邮件。
我最近将Facebook作为身份提供商添加到我的用户池中。
问题在于Facebook并不总是提供电子邮件,在这种情况下,Cognito会将新用户重定向到错误页面,上面写着“需要电子邮件”。
我想提示用户输入他/她的电子邮件,然后继续注册过程,而不是仅以错误结束。有没有办法做到这一点?
答案 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
自行实施。