【问题标题】:Switching identities in Cognito - how to handle merging of id's在 Cognito 中切换身份 - 如何处理 id 的合并
【发布时间】:2018-04-09 19:01:24
【问题描述】:

我有一个用户可以匿名使用或通过 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 保存的所有项目。

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

【问题讨论】:

    标签: aws-lambda amazon-cognito amazon-cognito-facebook


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2015-10-21
      • 2018-03-24
      • 1970-01-01
      • 2020-09-21
      • 1970-01-01
      • 2015-07-07
      • 2017-08-15
      • 2016-12-29
      • 2017-02-02
      相关资源
      最近更新 更多