我一直在理解用于添加多个登录提供程序的Amazon AWS Cognito Workflow的一些问题,这里有一些用于演示我的问题的psedu代码:
{Code to get CognitoCachingProvider}
Device Cognito ID = A
{Code to get Google Token}
withLogin(Google Token)
if(Identity is changed)
identityListener(
Device Cognito ID = ID in Cognito Pool)
else(
Device Cognito ID = a;
cognitoprovider.setLogin (Google Token);
)
withLogin(Facebook Token);
if(identity is changed)(
*****Device Cognito ID = ID in cognito Pool;*****
cognitoprovider.setLogin(Google TOken);
cognitoprovider.refresh();)
else
(Cognitoprovider.setLogin(Facebook Token);
cognitoprovider.refresh();)
所以我真正的问题是第二步。假设我想将Facebook和Google绑定到特定的Cognito ID。
三个例子:
1)未分配Cognito ID - 分配Google+和Facebook 2)Google分配了一个认知ID,没有Facebook - 获取Google登录不应影响Cognito ID - Facebook登录的收购只是作为另一个提供商添加 3)没有分配给谷歌的认知ID,但是没有分配给facebook: - 获取Google登录会创建一个新的独立的身份识别ID,该ID会立即被Facebook登录令牌的相关Cognito ID覆盖
这是对的吗?
答案 0 :(得分:3)
是的,您对前两种情况的理解是正确的。为了更好地了解这一点,Amazon Cognito在处理多个提供商时有两个概念:链接和合并。链接是指在单个设备上您使用提供商A登录并且已经拥有identityId并且您使用提供商B登录。在此方案中,identityId将保持不变,提供商B将链接到现有身份。现在让我们说您在设备X上与提供商A一起登录,在设备Y上与提供商B一起登录。这两个最终用户(身份)都将拥有其唯一的标识ID。现在,如果您在设备Y上使用提供商A登录,则会导致这两个身份的合并,并返回一个identityId,这将使两个提供商都与之关联。我希望这可以解决使用多个提供商的任何困惑。
谢谢,
Rachit