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

AWS Cognito用户池-“用户名”处的值null未能满足约束:成员不能为null”-iOS

魏成济
2023-03-14

我一直在AWS Mobile Hub上使用用户池。我已经设法与Facebook和G等提供商进行了登录。但是,当尝试使用AWS用户池登录时,我无法做到这一点。我可以成功注册并完美地连接到用户池(它可以识别错误的密码7个不存在的用户)。当我使用下面所示的方法登录时,我得到了错误:

msgstr"检测到1个验证错误:userName处的value null无法满足约束:成员不能为null"

我真的不知道发生了什么,因为用户名和密码实际上是正确的!(即使是硬编码的)。在这里,您可以看到我用于登录的代码:

    let pool = AWSCognitoIdentityUserPool(forKey: "UserPool")
    let user: AWSCognitoIdentityUser = pool.getUser(textFieldEmail.text!)


    user.getSession(textFieldEmail.text!, password: textFieldPassword.text!, validationData:nil, scopes: nil).continueWithBlock { (task:AWSTask) -> AnyObject? in

            if task.error == nil {
                print("Got: \(task.result)")
            } else {
                print("Error while logging in: \(task.error?.userInfo["__type"]) with message: \(task.error?.userInfo["message"])")
            }

            return nil
        }

我真的非常感谢你的帮助!我已尝试添加有关验证数据的信息。例如:

let userName:AWSCognitoIdentityUserAttributeType = AWSCognitoIdentityUserAttributeType()
    userName.name = "userName"
    iserName.value = textFieldEmail.text

但同样,不起作用。

谢谢

共有2个答案

江英华
2023-03-14

我相信关键应该是USERNAME,而不是类似于下面的用户名:

    let userName:AWSCognitoIdentityUserAttributeType = AWSCognitoIdentityUserAttributeType()
          userName.name = "USERNAME"
          userName.value = textFieldEmail.text

此外,userName.value拼写错误为userName.value。您不应该再收到此错误,因为我们已更新了错误消息,以反映应使用的实际密钥(本例中为userName)。

汪甫
2023-03-14

该消息意味着您为用户名提供的输入为空,我将深入了解您是如何填充该字段的。

就验证数据而言,不要担心。它不应该在那里,只是用户名/密码字段。

 类似资料:
  • 我正在使用Eclipse for Java和AWS工具包。我运行以下代码: 我在控制台视图中看到: […{Name:Name,AttributeDataType:String,DeveloperOnlyAttribute:false,Mutable:true,Required:false,StringAttributeConstraints:{MinLength:0,MaxLength:2048}

  • 我正在创建一个AWS CodePipeline资源与terraform: 运行时,在它返回 编辑: 新的部署阶段是: 我有这个应用程序创建使用: 组使用:

  • 我正在通过Sagemaker将模型部署到AWS上: 我将JSON模式设置如下: 并部署为: 我得到的错误如下: ClientError:调用CreateModel操作时发生错误(ValidationException):检测到1个验证错误:值“{SAGEMAKER_SPARKML_SCHEMA={”输入“:[{”类型“:“double”,“名称“:“V1”},{”类型“:“V2”},{”类型“:“

  • 我正在尝试在AWS中应用身份池策略。我正在使用awc cli设置策略,但标题中经常出现以下例外情况: 调用AttachPrincipalPolicy操作时发生错误(InvalidRequestException):检测到1个验证错误:“policyName”处的值“DeviceShadowPolicy”未能满足约束:成员必须满足正则表达式模式:[\w=,。@-] 这是我使用的命令: 我不明白为什么

  • 我打算访问zip文件的s3存储桶。 当我使用下面的代码时,它可以访问存储桶,因为它使用存储桶的根目录。 “S3Bucket”:{“Ref”:“HandlerCodeS3Bucket”}, 当我想访问同一个bucket的layers文件夹时,我使用HandlerCodeS3BucketLayer参数。 但它显示以下错误。

  • 我正在使用aws api gateway cli测试来测试api网关。API通过cognito用户池进行身份验证,我得到错误: 我不确定要使用哪个值来标识PoolId。我在哪里可以得到这些信息。 尝试类似ARN的失败。格式为的池Id也失败。 示例用法: 导致 根据:https://github.com/AnomalyInnovations/aws-api-gateway-cli-test