1

我有一个用户可以匿名使用或通过 facebook 登录的应用程序。所有这些都与 Cognito 相关联。使用应用程序时,他们调用 lambda 来保存他们喜欢的项目。我使用唯一的 cognito 身份 ID 将这些项目保存在 DynamoDB 表中。此唯一 ID 在 lambda 事件中提供;

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

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

T1

用户通过 Facebook 登录并保存一些项目。它们保存在 DynamoDB 表中,ID 为 ap-1。都好。

T2

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

T3

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

有什么方法可以在这里合并事件或处理更新记录的东西吗?我找不到任何关于它的文档。

4

1 回答 1

1

AWS 的答复;

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

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

于 2017-10-30T13:59:46.760 回答