Cognito用户池中不同用户的相同标识ID

时间:2017-11-05 08:14:45

标签: amazon-web-services amazon-cognito swift4

我在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函数中,但两者都没有帮助解决问题。

1 个答案:

答案 0 :(得分:2)

尝试以下操作,看看它是否解决了您的问题:

  • 致电credentialsProvider.clearKeychain()。这将清除所有已保存的值 - 凭证和& IdentityId。使用assert检查IdentityId是否已清除assert(credentialsProvider.identityId == nil)
  • 在进行同步通话之前,请使用credentialsProvider.getIdentityId()获取身份ID。

  • 您是如何签署用户的?尝试使用signout()方法

    let user = pool?.currentUser()    
    user?.signOut()
    
  • 默认情况下,SDK会记住上一个已知用户。如果需要,请使用pool?.clearLastKnownUser()清除它。

  • 调用Cognito同步客户端的wipe()方法来清除缓存数据