到目前为止,我只能在 objective-c 的 AWS 文档中找到如何执行此操作,而不是 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 的 objective c 文档也没有帮助。关于如何验证用户电话号码的任何想法?谢谢
最佳答案
您应该使用 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}]+"}
关于ios - 如何使用 Swift 中的 Cognito 用户池注册用户并验证他们的电话号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38417215/