我一直在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
但是,再次,不工作。
谢谢!
答案 0 :(得分:0)
该消息表示您为用户名提供的输入为空,我会深入了解您如何填充该字段。
就验证数据而言,不要担心。它不应该在那里,只是用户名/密码字段。
答案 1 :(得分:-1)
我认为密钥应该是USERNAME,而不是类似于以下的userName:
let userName:AWSCognitoIdentityUserAttributeType = AWSCognitoIdentityUserAttributeType()
userName.name = "USERNAME"
userName.value = textFieldEmail.text
此外,userName.value拼写错误至userName.value您不应再收到此错误,因为我们已更新错误消息以反映应使用的实际密钥(在本例中为USERNAME)。