2016-07-22 5 views
0

私のアプリは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)) 
} 

答えて

0

あなたのユーザーはデータの同期が取れていますが、同期を呼び出すと何も戻ってこないのですか?私の推測では、認証されていないユーザーを使用していて、デバイスが異なっているか、IDが変更されているかのどちらかです。 Cognitoは、認証されていない限り、データがユーザーに限定されているかどうかを知ることができません。したがって、別のデバイスまたはアイデンティティが変更された場合(アンインストール/再インストール、ローカルストレージがクリアされた場合など)

ログアウトしてログインし直したことを明確にすることはできますか?それはこれを絞り込み、上記の私の考えを裏付ける/否定するのに役立ちます。

+0

すべてのユーザーが認証されています。認証されていないオプションはありません。 auth0をCognitoの「ラッパー」として使用し、A0Lock.clearSessions()を呼び出してログアウトします。この 'ログアウト'の後、データはAWSサーバーに引き続き存在します。ユーザーが次にログインすると削除されます。 – Carl

+0

ログアウトしたときとログインしたときのIDは同じですか?それを確認できますか? –

+0

100%確実です。 AWSのアプリケーションインスタンスには1つのCognito Identity IDしかありませんので、この領域の奇妙な点を見つけるのは簡単です。 – Carl

関連する問題