当我以新用户身份登录时退出iOS应用程序后,getIdentityId()会返回上一个用户的Cognito Id。
有没有人在iOS中使用AWSCognito获得多用户帐户?
答案 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 ......并且您将拥有未经身份验证的凭据。)