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

React-Native+AWS Amplify注册时无法接收SMS验证码求助

React Native + AWS Amplify 注册无SMS验证码接收问题排查方案

问题复盘

  • 基于React Native开发的移动应用,后端采用AWS Amplify
  • 用户注册流程需通过SMS验证码完成账户验证,但实际无法接收验证码
  • 控制台日志显示“消息已发送”,无错误弹窗提示
  • 用户信息已成功存入Amplify用户池,但账户处于未验证状态
  • 已启用MFA,注册验证方式设为SMS
  • 注:用户模型中NICKNAME字段被用于存储IBAN等额外个人信息

逐点排查与修复方案

1. 核查AWS SNS基础配置

  • 手机号格式校验:Amplify要求手机号严格遵循E.164标准(如+8613xxxxxxxxx),不能包含空格、括号或省略国际区号,注册时传入的phone_number字段必须完全符合该格式,否则SNS会静默发送失败。
  • 查看SNS发送记录:登录AWS控制台进入SNS服务,查看短信发送历史,确认是否存在MessageRejected、InvalidPhoneNumber等失败状态码,这里可直接获取发送失败的具体原因。
  • 账户短信额度与权限:AWS新账户有短信发送额度限制,超出后会被拦截;部分国家/地区的短信发送需额外申请权限,需确认目标手机号所在地区是否在AWS SNS支持列表内。

2. 核对Amplify Auth配置

  • 检查aws-exports.js配置:确认auth模块的关键配置项正确:
    // aws-exports.js 中auth相关配置片段
    auth: {
      // ...其他配置
      signInVerificationMethod: "sms",
      mfaConfiguration: "OPTIONAL", // 或根据需求设为REQUIRED
      mandatorySignIn: true,
    }
    
  • 用户池验证规则:进入Cognito用户池,检查「MFA和验证」设置,确认「注册验证」渠道选择为SMS,且已关联正确的SNS服务角色。

3. 前端代码逻辑校验

  • 注册方法调用正确性:确保Auth.signUp参数完整且格式合规,重点核对phone_number字段:
    // 正确的signUp调用示例
    try {
      const result = await Auth.signUp({
        username: userPhone, // 建议直接用符合格式的手机号作为username
        password: userPassword,
        attributes: {
          phone_number: formattedPhone, // 必须为E.164格式的手机号
          nickname: userIBAN // 自定义存储IBAN的字段
        }
      });
      console.log('注册请求发送成功:', result);
    } catch (err) {
      console.error('注册错误:', err); // 务必捕获所有错误,避免静默失败
    }
    
  • 应用权限配置:Android端需在AndroidManifest.xml添加短信相关权限:
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    
    iOS端需在Info.plist中添加权限描述:
    <key>NSMessagesUsageDescription</key>
    <string>需要获取短信权限以接收验证代码</string>
    

4. 其他潜在问题排查

  • AWS区域一致性:确认Amplify初始化的区域与SNS服务使用的区域一致,部分区域不支持国际短信发送。
  • 运营商拦截:部分运营商会拦截境外发来的短信,可更换测试手机号或联系运营商确认是否存在拦截规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 08:32:33