2016-07-22 43 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

你的意思是你的用户有数据同步,但是当他们调用同步时,他们什么都没有回来?我最好的猜测是你使用的是未经身份验证的用户,并且设备不同或者身份已经改变。 Cognito无法确切地知道属于用户的数据,除非它们已通过身份验证,所以如果它是不同的设备或身份已更改(卸载/重新安装,本地存储已清除等),数据就会丢失。

你能澄清你的意思吗?注册并重新登录?这有助于缩小这一点,并确认/反驳我的上述想法。

+0

我所有的用户都通过了身份验证。没有未经验证的选项。我用auth0作为我的Cognito“包装器”,并调用A0Lock.clearSessions()来注销。在此“登出”步骤后,数据仍存在于我的AWS服务器上。当用户下次登录时,它将被删除。 – Carl

+0

而且您100%确定注销和登录时身份标识相同?你能证实吗? –

+0

100%肯定。我在AWS上有一个应用程序实例,只有一个Cognito Identity Id,因此可以很容易地发现此区域中的任何异常情况。 – Carl