到目前为止,我只能在目标c的AWS文档中找到如何执行此操作,而不是swift。我使用以下代码在swift中成功在用户池中创建用户:
let userPool = AWSCognitoIdentityUserPool(forKey: "myApp")
var name = AWSCognitoIdentityUserAttributeType()
name.name = "name"
name.value = nameEntry.text
var phone = AWSCognitoIdentityUserAttributeType()
phone.name = "phone_number"
phone.value = "+1" + phoneNumberEntry.text!
var email = AWSCognitoIdentityUserAttributeType()
email.name = "email"
email.value = emailEntry.text
userPool.signUp("goats", password: passwordEntry.text!, userAttributes: [name, phone, email], validationData: nil)
执行上述代码会按预期在Cognito用户池中创建用户。
此外,上述代码成功地将验证码发送到提供的电话号码。但是,我无法成功将此验证码传回AWS并验证电话号码。在用户池中创建用户后,我尝试了以下两行,这两行都没有更改要验证的电话号码:
user.verifyAttribute("phone_number", code: verificationEntry.text!)
user.confirmSignUp(verificationEntry.text!)
在用户注册后,我将用户变量设置为以下内容:
self.user = userPool.getUser()
这些都不起作用,AWS的客观c文档没有帮助。关于如何验证用户电话号码的任何想法?感谢
答案 0 :(得分:1)
您应该使用userPool.getUser(username: String)
,而不是userPool.getUser()
。
在你的情况下:
self.user = userPool.getUser(nameEntry.text)
否则,您可能会收到以下错误。
[Debug] AWSURLResponseSerialization.m line:63 | -[AWSJSONResponseSerializer responseObjectForResponse:originalRequest:currentRequest:data:error:] | Response body:
{"__type":"InvalidParameterException","message":"2 validation errors detected: Value at 'username' failed to satisfy constraint: Member must have length greater than or equal to 1; Value at 'username' failed to satisfy constraint: Member must satisfy regular expression pattern: [\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]+"}
答案 1 :(得分:0)
注册后,您应该致电确认注册以确认用户并标记电话/电子邮件(您获取代码的地方)。
您可以让用户确认该属性是否已标记为已验证。
P.S。:如果您遇到问题,请告诉我您的用户池ID,用户名和注册时间框架。
答案 2 :(得分:0)
您需要指定向其发送验证码的用户。所以使用带有用户名的getUser()。然后你打电话给confirmSignUp()。
答案 3 :(得分:0)
@IBAction func confirmButtonPressed(_ sender: AnyObject) {
if confirmationCodeTextField.text != nil {
let pool = AWSCognitoIdentityUserPool(forKey: "UserPool")
let user: AWSCognitoIdentityUser = pool.getUser("userName")
user.confirmSignUp(confirmationCodeTextField.text!).continue(with: AWSExecutor.mainThread(), withSuccessBlock: { (task: AWSTask<AWSCognitoIdentityUserConfirmSignUpResponse>) -> Any? in
if task.error != nil {
// Error
} else {
// handle the success response
}
return nil
})
} else {
// Ask user to enter the confirmation code.
}
}
上述方法可帮助您确认用户注册。在获取用户时,您必须指定&#34;用户名&#34;。此代码以 swift 3 编写。