【发布时间】:2017-01-05 00:42:11
【问题描述】:
我正在使用 AWS 开发工具包,将联合身份提供商与 Cognito 结合使用。现在,我正在这样做:
private void SetupCognitoStuff()
{
_cognitoCredentials = new CognitoAWSCredentials(
MY_IDENTITY ID, // Identity Pool ID
_awsRegion); // Region
if (_identityProviderName != null)
_cognitoCredentials.AddLogin(_identityProviderName, _identityProviderToken);
_identityId = GetIdentityId();
}
这可以很好地创建或检索用户的凭据,使用 Facebook 作为身份提供者。我还在应用的设置中缓存了 Cognito 身份 ID。
所以,现在假设用户下次使用我的应用时,他们会选择不同的登录提供商(比如说 Google)。我已经缓存了他们上次登录(通过 Facebook)时的 Cognito 身份 ID。当我这次实例化 CognitoAWSCredentials 时,我如何告诉它我想使用现有的 Cognito 身份 ID,并且应该添加 Google 作为第二个身份提供者,而不是创建一个全新的 Cognito 身份?
看the documentation for the raw API,应该是可以的:
合并身份
如果您为登录而不是 当前链接到给定的身份,但链接到另一个 身份,两个身份合并。一旦合并,一个身份 成为所有关联登录的父/所有者,另一个是 禁用。在这种情况下,父/所有者的身份 ID 是 回来。如果此值,您应该更新本地缓存 不同(如果您在 AWS 移动开发工具包或适用于浏览器中 JavaScript 的 AWS 开发工具包)。
如果是这种情况,那么当使用不同的身份提供者调用我的上述函数时,它如何知道(即我如何告诉它)使用哪个现有身份 ID?
从this page 看来,它似乎可以通过原始 API 通过调用 GetCredentialsForIdentity 并在“IdentityId”字段中传入现有身份 ID 并在“登录”字段中传入新的身份提供者信息来完成:
请求语法
{ "CustomRoleArn": "string", "IdentityId": "string", "Logins": { "string" : "string" } }
我只是不确定如何使用 CognitoAWSCredentials 类将其转换为 SDK。
【问题讨论】:
标签: amazon-web-services aws-sdk amazon-cognito federated-identity