如何从ios中的缓存中清除Cognito Id

时间:2016-09-17 11:43:25

标签: amazon-cognito

当我以新用户身份登录时退出iOS应用程序后,getIdentityId()会返回上一个用户的Cognito Id。

有没有人在iOS中使用AWSCognito获得多用户帐户?

2 个答案:

答案 0 :(得分:3)

Cognito Id存储在钥匙串中。您可以使用AWS iOS SDK清除钥匙串,以完全摆脱旧的Cognito Id。例如:

// check if a Cognito Id exists    
if identityProvider.identityId != nil {   // AWSCognitoCredentialsProvider
    // delete the old Cognito Id
    identityProvider.clearKeychain()
    assert(identityProvider.identityId == nil)
}

// Get a new Cognito identity
let task: AWSTask = identityProvider.getIdentityId()
task.continueWithBlock { (task) -> AnyObject? in
    if let error = task.error {
        completion(error: error)
    } else {
        // The new cognito identity token is now stored in the keychain.
    }
}

答案 1 :(得分:1)

我在https://github.com/aws/aws-mobilehub-helper-ios/issues/14

使用移动中心帮助器时确实报告了类似的问题

但这只是由AWSSignInProviders为谷歌和Facebook存储在NSUserDefaults中的数据,我没有体验到能够从不同的identityId同步数据。你确定这就是你所看到的吗?

一条评论,如果您使用不同的身份验证提供程序,您可能会意外地合并这两个身份(使用google登录然后使用facebook登录)。因此,请确保您正在查看不同的identityId,因为如果将它们合并,则会合并其同步数据集。

最后...... getIdentityId不足以切换身份。你需要通过一个电话得到凭证,如果没有凭证永远不会去,并且呼叫"登录"使用您的identityProviderManager并获取新的身份验证状态。 - 所以登录是get-id,然后获取id的凭据。如果您想成为未经身份验证的用户,则注销将是相同的(注销,因此您的登录字典为空,然后是getid,getcredentials ......并且您将拥有未经身份验证的凭据。)