在 Cognito 中切换身份 - 如何处理 id 的合并



我有一个应用程序,用户可以匿名使用或通过facebook登录。所有链接到Cognito。当使用该应用程序时,他们会调用lambda来保存他们喜欢的项目。我使用唯一的cognito标识id将这些项保存在DynamoDB表中。此唯一ID是在lambda事件中提供的;

{
...,
event.requestContext.identity.cognitoIdentityId: 'ap-..
...
}

对于如何解决这种情况,我有点不知所措。

T1

用户通过Facebook登录并保存一些项目。它们保存在DynamoDB表中,比如id ap-1。一切都很好。

T2

用户删除应用程序并在一个月后再次下载。这一次,他们跳过登录,并在id ap-2下获得匿名访问权限。他们保存了更多的项目,这些项目保存在id ap-2下的DynamoDB中。

T3

用户意识到他们忘记通过Facebook登录,所以他们完成了Facebook登录。由于他们已经通过Facebook登录,他们将获得id ap-1。这将ap-2合并到ap-1中,并将ap-1用于所有请求。现在,他们将看到从T1保存的所有项目,而不是从T2保存的项目。

是否有任何方法挂接此处的合并事件或处理更新记录的事情?我在上面找不到任何文件。

AWS的回答;

  • 每当合并标识时,也会合并两者的cognito同步数据集。因此,为每个标识创建一个Cognito同步数据集,该数据集存储IdentityId本身。现在,当两个id被合并时,数据集也将被合并。因此,即使您使用合并的id,也可以使用Cognito Sync数据集&获取被阻止的另一个id&您可以同时显示它们的记录。

  • 此外,如果使用Cognito Sync,则在数据集合并时会生成一个事件(发生在身份合并时)。您可以连接到这个来更新您的DynamoDb记录。请参阅此链接中的"onDatasetsMerged":http://docs.aws.amazon.com/cognito/latest/developerguide/handling-callbacks.html

最新更新