如何修复AWS Cognito集成Google OAuth2.0时的“Required Attributes birthday”错误?
解决AWS Amplify React Native OAuth2.0集成报错:
attributes+required%3A+%5Bbirthdate%5D 错误核心原因
该错误说明你的AWS Cognito用户池将birthdate设为必填属性,但OAuth流程中Google未返回该属性值,导致Cognito无法完成用户信息同步。
分步解决方案
1. 调整Cognito用户池属性必填设置
- 登录AWS控制台,进入目标Cognito用户池
- 切换到属性标签页,找到
birthdate属性 - 如果业务不需要强制收集生日,直接取消该属性的必填标记;如果必须保留必填,继续后续步骤
2. 验证Google授权与用户隐私配置
- 确认Google API同意屏幕已正确添加
https://www.googleapis.com/auth/user.birthday.read权限(对应你的截图检查权限列表) - 提醒测试用户检查Google账号的生日隐私设置:只有设为公开可见的生日,Google才会通过API返回该信息;私密生日无法被获取
3. 修正Cognito属性映射规则
- 进入Cognito用户池的联邦身份认证 -> 身份提供商 -> 选择Google
- 检查
birthdate的映射字段:- Google通过
profile范围返回的生日字段是birthday(格式为MM/DD/YYYY) - 通过
user.birthday.read范围返回的是birthdays数组(含详细生日结构) - 确保Cognito的
birthdate属性映射到正确的Google字段,避免因字段不匹配导致无法提取值
- Google通过
4. 调试验证Google返回数据
在React Native项目中开启Amplify调试日志,确认Google实际返回的用户信息:
Amplify.Logger.LOG_LEVEL = 'DEBUG';
运行项目后查看控制台日志,定位Google OAuth响应的用户数据,确认是否包含birthday或birthdays字段。若未返回,说明Google未授权或无法获取该信息,需调整权限或用户隐私设置。
内容的提问来源于stack exchange,提问作者Lychas
相关产品推荐
相关产品推荐

