我需要为Cognito Identity Pool用户获取联合身份标识 .
我的dynamodb表使用userId作为主键,其中userId是Cognito Federated Identity Id(使用mobilehub配置) . 在Android应用程序中,我使用AmazonCognitoIdentityProviderClient进行查询(使用IdentityManager正确实例化并使用CognitoUserPoolsSignInProvider和FacebookSignInProvider) - 此查询成功检索了我的cognito用户池中的所有用户(我确实使用了过滤器,但是为简单起见删除它,这里):
ArrayList<UserType> cognitoPoolUsers = instantiatedAmazonCognitoIdentityProviderClient().listUsers().getUsers();
cognitoPoolUsers中的用户具有电子邮件和用户名等属性,但用于发电子主键的userId是链接到cognitoPoolUser的联合用户的userId .
如果我已经成功检索到cognitoPoolUsers列表,我该如何检索相应的联合身份userId?
End goal (I would actually use batchLoad, but for simplicity..):
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)
}
1 回答
您可以通过登录用户获取Id令牌并调用GetId API来获取Userpool用户的Identity Id . 使用Android SDK:
如果要使用低级API调用,this是相关调用 . 在登录映射参数中添加Userpool令牌 .