Я использую AWS Cognito для моего приложения. Войти и зарегистрироваться. В моем приложении сначала пользователь регистрируется по электронной почте и номеру телефона. После этого я перенаправляю на экран проверки (здесь OTP отправляет Cognito). После проверки пользователь OTP создаст несколько хранилищ, а затем войдет в панель управления. В этом потоке я хочу получить Атрибут сведений о пользователе от Cognito при успешном выполнении кода проверки. Я реализовал метод getDetails()
, чтобы получить userAttributes
в коде проверки успешно, но он не вызывается. Мне нужно userAttributes
когда время создания магазина. Любая помощь приветствуется.
Вот мой код:
@IBAction func submitButtonAction(_ sender: GradientButton) {
let code = firstChar+secondChar+thirdChar+fourthChar+fifthChar+sixthChar
guard code.count == 6 else{
self.showAlert(message: ErrorMessages.kEnterValidOTP)
return
}
let currentUser = self.userPool?.getUser("xxxx@gmail.com")
currentUser?.confirmSignUp(code, forceAliasCreation: true).continueWith(block: { [weak self] (task) -> Any? in
guard let strongSelf = self else { return nil }
DispatchQueue.main.async {
if let error = task.error as NSError? {
if let message = error.userInfo["message"] as? String{
self?.showAlert(message: message, onOkAction: {
strongSelf.clearTextFieldData()
})
}else{
self?.showAlert(message: error.localizedDescription, onOkAction: {
strongSelf.clearTextFieldData()
})
}
}else{
print(task.result)
strongSelf.clearTextFieldData()
print(AWSUserDetails.shared.userPool.currentUser()?.username)
let user = AWSUserDetails.shared.userPool.currentUser()
//I've tried the above `user` and `currentUser`. But not working.
user?.getDetails().continueOnSuccessWith(block: { (task) -> Any? in
DispatchQueue.main.async {
if task.error == nil{
print(task.error)
}else{
print(task.result)
}
}
})
// strongSelf.performSegue(withIdentifier: SegueIdentifiers.createStoreSegue, sender: self)
}
}
return nil
})
}