我已成功实施了Cognito for iOS。我决定将认证过程分为三个阶段:
对于代码确认,我有这段代码:
func sendCode() {
self.pool = AWSCognitoIdentityUserPool(forKey: AWSCognitoUserPoolsSignInProviderKey)
let userForCode = self.pool?.getUser(self.emailTextField.text!)
// Bizarre ce test ne passe pas pourtant le client est confirmé dans Cognito...
if (userForCode?.confirmedStatus != AWSCognitoIdentityUserStatus.confirmed) {
userForCode?.confirmSignUp(confirmCodeTextField.text!, forceAliasCreation: true).continueWith { [weak self] (task) -> Any? in
DispatchQueue.main.async {
if let error = task.error as? NSError {
print("erreurCode : \(error.userInfo["message"])")
} else if let result = task.result {
print("client créé confirmé")
}
}
return nil
}
}
}
我从userPool获得一个用户,如果他的帐户尚未确认,我想询问用户是否为确认码,以便对userCode.confirmedStatus进行测试。遗憾的是,即使用户在Cognito AWS控制台中具有已确认状态,测试也始终为真。
答案 0 :(得分:0)
我已经在我的应用中完成了确认代码,并在向用户发送电子邮件后使用verifyAttribute
完成了该操作:
self.user?.verifyAttribute("email", code: code).continueWith { (task) in
DispatchQueue.main.async(execute: {
if let error = task.error as NSError? {
// handle error (display message perhaps)
} else {
// the verification code is correct, continue with your application
}
})
return nil
}
变量code
取自textField,用户输入验证码。