【发布时间】:2018-07-02 21:55:35
【问题描述】:
我需要获取 Cognito 身份池用户的联合身份 ID。
我的 dynamodb 表使用 userId 作为主键,其中 userId 是 Cognito 联合身份 ID(使用 mobilehub 配置)。在一个 android 应用程序中,我使用 AmazonCognitoIdentityProviderClient 进行查询(使用 IdentityManager 正确实例化并使用 CognitoUserPoolsSignInProvider 和 FacebookSignInProvider)——此查询成功检索了我的 cognito 用户池中的所有用户(我确实使用了过滤器,但有为简单起见,在此处将其删除):
ArrayList<UserType> cognitoPoolUsers = instantiatedAmazonCognitoIdentityProviderClient().listUsers().getUsers();
cognitoPoolUsers 中的用户具有电子邮件和用户名等属性,但用于 dynamo 主键的 userId 是链接到 cognitoPoolUser 的联合用户的 userId。
如果我已成功检索到 cognitoPoolUsers 列表,如何检索相应的联合身份 userId?
最终目标(我实际上会使用 batchLoad,但为简单起见..):
ArrayList<UserType> cognitoPoolUsers = instantiatedAmazonCognitoIdentityProviderClient().listUsers().getUsers();
for(int k=0; k<cognitoPoolUsers.size(); k++) {
UserType cognitoPoolUser = cognitoPoolUsers.get(k);
SomeDynamoDO dynamoDO = new SomeAmazonDO();
//Unknown Step:
String correspondingFederatedId = extractFederatedId(cognitoPoolUser);
dynamoDO.setUserId(correspondingFederatedId)
dynamodbMapper.load(dynamoDO)
}
【问题讨论】:
-
简单。登录您的用户池用户;获取token并调用GetId API并在loginmap中提供token
-
@agent420 ,这行得通!您想添加一个快速代码 sn-p 作为实际评论,以便我可以正式接受您的作为答案吗?
-
太棒了!添加我的评论作为答案
标签: android amazon-web-services amazon-dynamodb aws-sdk aws-cognito