ios - 如何使用 Swift 中的 Cognito 用户池注册用户并验证他们的电话号码?

标签 ios swift amazon-web-services amazon-cognito

到目前为止,我只能在 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/

相关文章:

swift - Swift 中非文字值的枚举

ios - 在 ARC 中监控引用计数

ios - 捕获组合的按钮按下和平移手势

ios - Swift 4 捕获照片,photoOutput 返回 nil

xcode - 更改背景图像时容器 View 动画无法正常工作

amazon-web-services - 在 yaml 中执行调整根卷大小,但在 ec2 中不调整大小

amazon-web-services - 在 AWS-CodePipeline 管道中使用两个源

.net - 从 amazon s3 存储桶子文件夹 .Net 获取文件

ios - NSParagraphStyle 属性名称 : Conversion from swift 3 to swift 4. 2

iOS setContentOffset 不适用于 ipad