Cognito用户确认具有未确认状态

时间:2017-07-13 14:22:37

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

我已成功实施了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控制台中具有已确认状态,测试也始终为真。

1 个答案:

答案 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,用户输入验证码。

相关问题