You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android应用中AWS Cognito内置UI缺失必填family name字段求助

解决AWS Cognito内置Android UI不显示必填Family Name字段的问题

我之前也踩过这个坑!当你在AWS控制台把family_name设为必填用户属性后,Cognito的内置Android UI并不会自动同步这个配置——你得在代码或者配置文件里手动指定要显示这个字段才行。下面分两种常见场景给你解决方案:

场景1:使用Amplify UI for Android(推荐)

如果你用的是AWS Amplify的Auth组件,最便捷的方式是修改配置文件:

  • 找到项目里的amplifyconfiguration.json(一般在app/src/main/res/raw目录下),定位到auth -> awsCognitoAuthPlugin -> Auth -> Default下的signupAttributes数组,把family_name添加进去:
"Auth": {
    "Default": {
        "authenticationFlowType": "USER_SRP_AUTH",
        "signupAttributes": [
            "email",
            "family_name"  // 新增这个字段
        ]
    }
}
  • 保存配置后重新运行App,注册表单里就会自动出现Family Name的输入框,而且因为你在控制台设为必填,Cognito后端会自动校验这个字段是否填写。

如果需要动态控制注册字段,也可以通过代码配置AuthSignUpOptions:

// 构建注册选项,指定要包含family_name字段
val signUpOptions = AuthSignUpOptions.builder()
    .userAttribute(AuthUserAttributeKey.familyName(), "")
    .build()

// 触发注册流程
Auth.signUp(
    username = "your_username",
    password = "your_password",
    options = signUpOptions
)

场景2:关键检查项(必做!)

很多人会漏掉这一步,导致配置后还是不显示:

  • 登录AWS控制台,进入你的Cognito用户池
  • 找到App clients,点击对应的客户端进入详情页
  • 在App client settings里,确认family_name已经被添加到Allowed user attributes列表中
  • 如果没加,手动添加并保存设置

旧SDK场景(非Amplify)

如果你用的是旧版Cognito Android SDK(非Amplify),需要自定义注册页面:

  • 在布局文件中添加Family Name的EditText控件
  • 在注册时,把输入的字段值放到SignUpRequest的userAttributes里:
Map<String, String> userAttributes = new HashMap<>();
userAttributes.put("family_name", familyNameEditText.getText().toString());

SignUpRequest signUpRequest = new SignUpRequest()
        .withClientId("YOUR_APP_CLIENT_ID")
        .withUsername(username)
        .withPassword(password)
        .withUserAttributes(userAttributes);

cognitoUserPool.signUpInBackground(signUpRequest, signUpHandler);

内容的提问来源于stack exchange,提问作者Mehmet Kemal Bayer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:10:46