AWS Cognito用户池 - “'userName'处的值null无法满足约束:成员不能为空” - iOS

时间:2016-08-20 05:44:39

标签: ios swift amazon-web-services aws-sdk amazon-cognito

我一直在AWS Mobile Hub上使用UserPools。我已经设法登录Facebook和G +等提供商。但是,当尝试使用AWS UserPools登录时,我无法设法这样做。我可以成功注册并完美连接到UserPool(它识别错误的密码7不存在的用户)。当我使用下面显示的方法登录时,出现错误:

  

“检测到1个验证错误:'userName'处的值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 个答案:

答案 0 :(得分:0)

该消息表示您为用户名提供的输入为空,我会深入了解您如何填充该字段。

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

答案 1 :(得分:-1)

我认为密钥应该是USERNAME,而不是类似于以下的userName:

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

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