我在Cognito userPool中创建了两个用户(来自XCode模拟器),如image
中所示然后,我期待联合身份中的身份浏览器,为每个用户分配不同的唯一身份ID。不幸的是,只有一个身份ID,两个不同的帐户使用相同的数据(在数据集中),如image。我也做了下面问题中提到的相同方法。但我仍然有一个问题。
Integrating Congnito User Pools with Amazon Cognito Identity
我在App委托代码中的代码;
let serviceConfiguration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: nil)
// create pool configuration
let poolConfiguration = AWSCognitoIdentityUserPoolConfiguration(clientId: "2xXx6X77x7X8YYyyy7X9",
clientSecret: "f87as68a7f68adf6sa897f79af789a7fda8a7sd698",
poolId: "us-east-1_XXXXXXXX")
// initialize user pool client
AWSCognitoIdentityUserPool.register(with: serviceConfiguration, userPoolConfiguration: poolConfiguration, forKey: "UserPool")
// fetch the user pool client we initialized in above step
let pool = AWSCognitoIdentityUserPool(forKey: "UserPool")
self.storyboard = UIStoryboard(name: "Main", bundle: nil)
pool.delegate = self
//SAVE & LOAD DATA TO AWS COGNITO SYNC
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "us-east-1:xxxxxxx-xxxx-xxxx-xxxxxxxxx", identityProviderManager: pool)
let configuration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: credentialProvider)
//credentialProvider.clearCredentials()
AWSServiceManager.default().defaultServiceConfiguration = configuration
我尝试将credentialProvider.clearCredentials()
添加到App delegate和signOut函数中,但两者都没有帮助解决问题。
答案 0 :(得分:2)
尝试以下操作,看看它是否解决了您的问题:
credentialsProvider.clearKeychain()
。这将清除所有已保存的值 - 凭证和& IdentityId。使用assert检查IdentityId是否已清除assert(credentialsProvider.identityId == nil)
在进行同步通话之前,请使用credentialsProvider.getIdentityId()
获取身份ID。
您是如何签署用户的?尝试使用signout()方法
let user = pool?.currentUser()
user?.signOut()
默认情况下,SDK会记住上一个已知用户。如果需要,请使用pool?.clearLastKnownUser()
清除它。