当前位置: 首页 > 知识库问答 >
问题:

使用AWS Cognito在iOS应用程序中获取描述性登录错误消息

邵羽
2023-03-14

我正在Swift中开发一个iOS应用程序,使用AWS Cognito处理用户登录和注册。我发现,当用户做Cognito不允许的事情时(登录时输入错误的用户名/密码,试图创建不符合要求的密码等),应用程序将显示错误消息,如操作无法完成。(Com.amazonaws.awscognitoidentityprovidederror域错误0。)。我注意到,不同的操作可能会导致不同的错误代码,但我希望使错误消息更具描述性,以便我的用户能够真正知道他们做错了什么。

目前,我通过检查if task.error!=nil用于登录/注册/etc.任务,如果此检查返回true,我将得到字符串task.error!。错误消息的本地化描述。我意识到我可以通过获取对应于1位代码的子字符串从这个字符串中获取错误代码,但这似乎是一个非常糟糕的长期解决方案。至少,我希望得到一个整数形式的错误代码,或者最好得到一个对普通用户有意义的错误描述。有没有办法做到这一点?

共有2个答案

何章横
2023-03-14

尝试使用AWSCognito标识符提供程序错误类型枚举(请参阅AWSCognito标识符提供程序模型. h)。它的raw值表示在NSErrix中的ErrorCodes,带有AWSCognitoIdtyProviderErrorDomain

宣望
2023-03-14

制作了一个利用@cornr答案的助手:

extension Error {
    /// Returns a custom description for the error if available, otherwise `localizedDescription`
    var customDescription: String {
        let ns = self as NSError

        // AWS Errors
        if ns.domain == AWSCognitoIdentityProviderErrorDomain, let code = AWSCognitoIdentityProviderErrorType(rawValue: ns.code) {
            switch code {
            case .invalidParameter: return "Invalid user / password"
            case .invalidPassword: return "Invalid password."
            case .notAuthorized: return "Not authorized."
            case .userNotConfirmed: return "User not confirmed."
            case .passwordResetRequired: return "Password reset required."
            default: return "AWS Cognito Error: \(code.rawValue)"
            }
        }
        return localizedDescription
    }
}

并没有全部填写,只是我遇到的那些。请随意编辑更多内容。对任何错误调用error.customDescription,都将返回改进的字符串或localizedDescription。

 类似资料:
  • 我试图得到从https://api.twitter.com/oauth/request_token.但我总是得到以下错误。 “验证oauth签名和令牌失败” 以下是我的signature_base: 生成的身份验证标头为: 我用我的密钥验证了签名,它是正确的。真的不知道问题出在哪里。。。 一个线索是,当根本不使用时,我可以获取请求令牌...请帮忙! 谢谢Lee 编辑:如果我不使用oauth\u回调

  • 伙计们,我们外包了我们的移动应用程序开发,公司只是给了我一个IPA文件,我必须重新签署,然后上传到iTunes Connect。现在,我只想看到这个应用程序的试飞,我看了一个youtube视频,认为这将是直接的,所以我创建了一个生产证书后,我做了我的应用程序id,然后我创建了一个发行版供应配置文件,并选择应用商店作为我的发行版。我曾经为了改变我在这里找到的教程而进行设计,但是当我使用应用程序加载器

  • 我一步一步地遵循这篇论文:https://richonrails.com/articles/google-authentication-in-ruby-on-rails/我创建了一个全新的rails应用程序来测试。但是我一直得到同样的错误:错误:invalid_request 重定向uri的参数值无效:不允许原始IP地址:http://0.0.0.0:3000/auth/google_oauth2

  • 我已经创建了演示Spring Boot项目,并实现了这里所示的Restful服务 当我试图调用邮递员工具与url"http://localhost:8080/api/greetings"作为请求方法GET服务,我得到下面的错误消息 对于每个Spring Boot应用程序,我不必在web中配置Spring Dispatcher servlet。xml。 有人能帮我找出这里缺失的点吗?

  • 我已经使用flatter和FirebaseAuth实现了一个简单的应用程序,我想让用户通过电子邮件和密码登录,这个应用程序可以在iOS模拟器中正常工作,当我尝试将应用程序侧向加载到物理iOS设备时,会出现几个错误,登录过程失败,应用程序无法继续。我已经展示了代码和出现的错误,并且列出了迄今为止我采取的缓解这些错误的步骤,这些步骤都没有奏效。 密码 错误 到目前为止,我已经尝试了以下方法, 根据留档

  • 问题内容: 我已经使用基于标准的基于wildfly的Keycloak适配器的Keycloak保护了企业应用程序。我面临的问题是,其余的Web服务在被调用时需要知道当前登录的用户名。如何从Keycloak获取登录的用户信息? 我尝试使用,等等。但是没有一个能够提供所需的详细信息。 问题答案: 您从安全上下文中获取所有用户信息。 例: 为了传播安全上下文,您必须具有如下配置的安全域: JBoss /