AWS Amplify Facebook联合登录未返回邮箱报invalid_request错误求助
问题排查步骤
1. 检查Facebook开发者平台配置
- 确认你的Facebook应用已申请
email权限:如果应用处于开发模式,仅测试用户可获取邮箱;若要对外开放使用,email属于高级权限,必须通过Facebook官方应用审核后,全量用户才能正常返回邮箱字段。 - 确认Facebook应用的OAuth重定向URI列表中,已添加Cognito的回调地址:
https://{baseURL}.amazoncognito.com/oauth2/idpresponse,地址不匹配会导致Facebook截断返回的用户字段。 - 确认测试使用的Facebook账号已绑定有效邮箱,且未设置邮箱对外隐藏,否则授权时不会返回邮箱字段。
2. 检查Cognito用户池配置
- 进入Cognito控制台的身份提供商 > Facebook配置页,确认已添加属性映射:将Facebook侧的
email字段,映射到Cognito用户池的email内置属性,无映射的情况下即使Facebook返回邮箱,Cognito也不会识别读取。 - 确认Cognito中配置的Facebook授权范围已包含
email,从你提供的请求日志来看scope已携带该值,可再去控制台二次确认避免配置遗漏。 - (可选兜底测试)可暂时将Cognito用户池的邮箱属性从必填改为非必填,先验证整个登录流程能否正常走通,缩小排查范围。
3. 代码检查
你当前的Amplify调用写法没有问题,不需要修改:
const handleFacebookLogin = async () => { try { await Auth.federatedSignIn({ provider: 'Facebook', }) } catch (e) { notification(e.message, "danger"); } };
内容的提问来源于stack exchange,提问作者Haris George
相关产品推荐
相关产品推荐

