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

iOS端使用AWS Amplify登录提示用户名或密码错误如何解决

问题原因及对应解决方法

配置类问题

  • 确认项目中amplifyconfiguration.json里的Cognito用户池ID、应用客户端ID,与你查询用户状态的Cognito用户池完全匹配。多环境开发场景下极易出现注册阶段使用开发环境配置,登录阶段误切到其他环境配置的问题,导致两个环境的用户数据不互通。
  • 检查对应Cognito应用客户端的认证流配置:进入Cognito控制台→目标用户池→应用集成→应用客户端列表→找到对应客户端,确认"身份验证流"配置中勾选了ALLOW_USER_PASSWORD_AUTH,未开启该认证流会直接返回用户名或密码错误的通用报错。

传参规则不匹配问题

  • 如果你在Cognito用户池配置中设置了用户化化名为邮箱/手机号,登录时必须传入完整的邮箱/手机号作为登录凭证,仅传入自定义用户名字段会校验失败。
  • Cognito默认对用户名做大小写不敏感匹配,但部分旧版本Amplify iOS SDK会自动将注册阶段的用户名转为小写存储,登录阶段如果传入带大写的用户名会导致匹配失败。可以在调用登录接口前,先将用户输入的用户名统一转为小写再传递。

验证方式:直接在Cognito控制台的用户管理页使用"登录用户"功能,输入App端尝试登录的用户名密码。如果控制台也报错说明是凭证本身的问题,如果控制台可以正常登录,则100%是客户端参数传递或配置的问题。

密码处理异常问题

  • 检查App端是否对用户输入的密码做了多余的编码、转义、自动去除首尾空格等处理,Cognito会严格匹配密码的原始字符串,任何额外的处理都会导致校验失败。
  • 可以临时在登录接口调用前打印传入的用户名、密码明文,和注册时的输入做对比,确认参数完全一致。

排查代码示例

func login(username: String, password: String) async {
    do {
        let signInResult = try await Amplify.Auth.signIn(username: username, password: password)
        print("登录成功: \(signInResult.nextStep)")
    } catch let error as AuthError {
        print("认证错误描述: \(error.errorDescription)")
        print("恢复建议: \(error.recoverySuggestion)")
        if let underlying = error.underlyingError {
            print("底层错误详情: \(underlying)")
        }
    } catch {
        print("未知错误: \(error.localizedDescription)")
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:27:00