AWS Amplify联合登录Facebook不返回用户邮箱问题求助
问题原因
- Cognito用户池绑定的Facebook身份提供商默认仅配置了
public_profile授权范围,未显式申请email权限,Facebook平台不会主动返回用户邮箱字段。 - 部分测试场景下,Facebook账号未绑定公开邮箱、或用户授权时手动拒绝了邮箱访问权限,也会导致返回数据无邮箱。
解决方案
- 配置Cognito身份提供商授权范围
进入AWS Cognito控制台,打开对应用户池,进入「身份提供商」页签,选择已配置的Facebook提供商,在「授权范围」输入框中追加email字段后保存配置。 - 检查Facebook应用权限
登录Meta开发者后台,打开对接使用的Facebook应用,进入「应用审查」→「权限和功能」页,确认email权限已启用,开发模式下无需公开发布审核即可给测试账号使用。 - 确认属性映射配置
回到Cognito Facebook身份提供商的「属性映射」配置页,确认Facebook侧email属性已映射到Cognito用户池的email属性,你当前的配置截图已满足该要求,无需修改。 - 测试验证
清除浏览器Cognito会话缓存后重新触发Facebook登录,授权弹窗会明确提示需要获取用户邮箱权限,同意授权后即可在Pre sign-up Lambda事件中获取到email字段。
注意:如果测试用Facebook账号仅绑定手机号未设置邮箱,或用户授权时手动拒绝邮箱访问,仍会出现邮箱为空的情况,需要在业务代码中补充兼容逻辑,引导用户手动填写邮箱。
内容的提问来源于stack exchange,提问作者Geeshan
相关产品推荐
相关产品推荐

