私のアプリはAWS Cognitoを使用してユーザーの設定を保存します。cognitoSyncデータがワイプされる
ユーザーは認証され、その設定が保存されます。 ユーザーがログアウトすると、CognitoデータセットがAWSサーバー上に存在します
しかし、これらのユーザーがログインし直すと、アプリケーションが最初に同期したときにすべてのデータセットフィールドが消去されます。
dataset.synchronize()
が返ってくると、AWSサーバーのデータが削除されます。私は何をしたのですか?
var cognitoDS:AWSCognitoDataset?
…
func getCognitoDataset() -> AWSCognitoDataset? {
if cognitoDS == nil {
if let cognitoSync = AWSCognito.defaultCognito() {
if let cognitoDS = cognitoSync.openOrCreateDataset(Constants.CognitoUserDataset) {
self.cognitoDS = cognitoDS
} else {
print("openOrCreateDataset() returned nil")
}
} else {
print("cognitoSync not found")
}
}
return cognitoDS
}
func synchronizeCognitoDS() -> AWSTask {
if let dataset = getCognitoDataset() {
return dataset.synchronize().continueWithBlock { task in
if let error = task.error {
NSLog("Error in sync: %@", error.localizedDescription)
return task
}
if task.completed {
NSLog("Sync successful")
}
return task
}
}
return AWSTask(error:NSError(domain:"Juno", code:3030, userInfo:nil))
}
すべてのユーザーが認証されています。認証されていないオプションはありません。 auth0をCognitoの「ラッパー」として使用し、A0Lock.clearSessions()を呼び出してログアウトします。この 'ログアウト'の後、データはAWSサーバーに引き続き存在します。ユーザーが次にログインすると削除されます。 – Carl
ログアウトしたときとログインしたときのIDは同じですか?それを確認できますか? –
100%確実です。 AWSのアプリケーションインスタンスには1つのCognito Identity IDしかありませんので、この領域の奇妙な点を見つけるのは簡単です。 – Carl