成功登录后,Cognito Issighin潜伏期问题



在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()以更新UI,该如何处理?这是一个问题,因为使用isSignedIn调用getDetails()仍然false会导致SDK再次启动身份验证过程。

我遇到了同样的问题,我通过的方式是:

登录后,当您拥有用户名和密码时,在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")
           }
       }
})

对我而言,这样做的用户状态正确。绝对不是理想的,但这对我来说是一份工作。

相关内容

  • 没有找到相关文章