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

Flutter+Amplify Studio手机号注册时出现无效邮箱格式错误

解决Flutter Amplify手机号注册时的「无效邮箱格式」错误

错误根源

你的代码存在字段赋值错误:将CognitoUserAttributeKey.phoneNumber属性的值设置为了_email.text,但当前场景是手机号注册,用户输入的是手机号而非邮箱,这个值会被Cognito当作邮箱格式校验,自然触发「无效邮箱格式」的错误。

修复步骤

  1. 修正字段赋值
    将phoneNumber属性的值改为手机号输入框的内容(比如_phoneNumber.text,需确保你有对应的手机号输入控件),而非复用邮箱输入框的值。

  2. 规范手机号格式
    Cognito要求手机号必须包含国际区号前缀,例如中国手机号需格式化为+8613xxxxxxxxx,不能只填写纯数字。

  3. 调整用户名参数(可选)
    如果你的认证逻辑是用手机号作为用户名,需将username参数也改为手机号输入框的内容,避免混淆邮箱和手机号的用途。

修正后的代码示例

Future<void> signUpWithPhoneVerification() async {
  await Amplify.Auth.signUp(
    // 若用手机号作为用户名,替换为手机号输入框内容
    username: _phoneNumber.text,
    password: _password.text,
    options: CognitoSignUpOptions(
      userAttributes: <CognitoUserAttributeKey, String>{
        // 若业务需要收集邮箱则保留,否则可移除(需匹配Amplify用户池配置)
        CognitoUserAttributeKey.email: _email.text,
        // 修正:赋值为手机号输入框内容,且带国际区号
        CognitoUserAttributeKey.phoneNumber: _phoneNumber.text,
      },
    ),
  );
}

额外检查点

  • 确认Amplify Studio用户池配置:如果仅需手机号认证,检查是否关闭了「强制要求邮箱」的选项,避免不必要的字段校验。
  • 前端输入校验:在调用注册接口前,提前校验手机号格式(是否带区号、位数是否合规),提前拦截格式错误。

内容的提问来源于stack exchange,提问作者wuuyungwuu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:25:18