React Native集成AWS Amplify注册报错:name.formatted属性必填
解决AWS Amplify注册时
name.formatted必填错误 问题原因
你遇到的错误是因为AWS Amplify用户池中的name属性被配置为结构化Name类型(对应schema.org的Name对象,包含formatted、givenName等子字段),而非简单的字符串类型。即便你以为只需要填写name,系统实际会要求提供name.formatted这个结构化子字段。
解决方案
方案1:将name改为字符串类型(推荐)
如果业务仅需简单的用户名字符串,修改用户池属性配置即可:
若用Amplify CLI初始化Auth:
- 执行命令
amplify update auth - 选择修改用户池属性的对应选项
- 找到
name属性,将类型从Name(结构化)改为String - 执行
amplify push部署配置变更
- 执行命令
若直接在AWS控制台操作:
- 进入AWS Cognito控制台,打开目标用户池
- 切换到「属性」标签页
- 在标准/自定义属性中找到
name,将类型改为「字符串」 - 保存配置
方案2:注册时传递name.formatted字段
如果必须使用结构化Name类型,调整注册代码的参数结构:
原错误代码示例:
Auth.signUp({ username: 'user@example.com', password: 'Password123', attributes: { email: 'user@example.com', name: '张三' // 此处直接传字符串会触发错误 } })
修改为:
Auth.signUp({ username: 'user@example.com', password: 'Password123', attributes: { email: 'user@example.com', 'name.formatted': '张三' // 传递结构化的formatted子字段 } })
内容的提问来源于stack exchange,提问作者lalit patidar
相关产品推荐
相关产品推荐

