Cognito isSigned В проблеме задержки после успешного входа в систему
В приложении для iOS используется AWS Cognito.
Внутри didCompleteStepWithError(_ error: Error?)
метод, у меня проблемы с isSignedIn
свойство, которое не сразу верно после успешного входа в систему.
Когда я сразу проверяю:
userPool.currentUser?.isSignedIn // false
Но если я задержу проверку:
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0, execute: {
print(userPool.currentUser?.isSignedIn) // true
})
1) Почему isSignedIn
свойство не сразу верно?
2) Как с этим справиться, если мне нужно сделать getDetails()
для того, чтобы обновить пользовательский интерфейс? Это проблема с момента звонка getDetails()
с isSignedIn
Значение false приведет к тому, что SDK снова запустит процесс аутентификации.
0 ответов
Я сталкивался с той же самой проблемой, и путь, которым я прошел, был следующим:
Сразу после входа, когда у вас есть имя пользователя и пароль, в методе делегата Cognito: didCompleteStepWithError, вызовите этот метод:
- (AWSTask<AWSCognitoIdentityUserSession *> *)getSession:(NSString *)username
password:(NSString *)password
validationData:(nullable NSArray<AWSCognitoIdentityUserAttributeType *> *)validationData;
Код будет примерно таким:
self.user.getSession(username, password:password).continueWithBlock(block: { (result) -> Any? in
if let idToken = result.result?.idToken{
//YOU HAVE THE TOKEN
if self.user?.isSignedIn ?? false{
print("user finally signed in")
}
else{
print("something weird happened")
}
}
})
для меня это сделало правильный статус пользователя. Определенно не идеал, но он сделал работу для меня.