我花了一天时间试图让Cognito在我的服务器上工作。我找不到任何有用的文档,因为没有明确的例子来设置它。
我的服务器上有以下代码:
BasicAWSCredentials credentials = new BasicAWSCredentials(
"A**************",
"+y*****************************");
AmazonCognitoIdentityClient client =
new AmazonCognitoIdentityClient(credentials);
GetOpenIdTokenForDeveloperIdentityRequest tokenRequest =
new GetOpenIdTokenForDeveloperIdentityRequest();
tokenRequest.setIdentityPoolId("eu-west-1:be9d19a5-*******************");
HashMap<String, String> map = new HashMap<String, String>();
//Key -> Developer Provider Name used when creating the identity pool
//Value -> Unique identifier of the user in your <u>backend</u>
map.put("access.com.cbn.postref", "fred");
//Duration of the generated OpenID Connect Token
tokenRequest.setLogins(map);
tokenRequest.setTokenDuration(1000l);
GetOpenIdTokenForDeveloperIdentityResult result = client
.getOpenIdTokenForDeveloperIdentity(tokenRequest);
String identityId = result.getIdentityId();
String token = result.getToken();
System.out.println("id = " + identityId + " token = " + token);
我创建了一个IAM用户,并在上面的代码中使用了公钥和私钥。我已经使用Dev在Cognito上创建了一个IndentityPool。验证。代码中给出的ID:access.com.cbn.postref。
当我运行此代码时,我得到一个例外:
com.amazonaws.services.cognitoidentity.model.ResourceNotFoundException: IdentityPool&#39; eu-west-1:be9d19a5 - ***********************&#39;未找到。 (服务:AmazonCognitoIdentity;状态代码:400
生成于
GetOpenIdTokenForDeveloperIdentityResult result = client
.getOpenIdTokenForDeveloperIdentity(tokenRequest);
我完全失去知道如何继续,因为我无法看清我做错了什么。我确实尝试获取IdentityPools列表但返回0大小的列表。
答案 0 :(得分:8)
访问eu-west-1区域中的标识池时,必须明确设置客户端的区域以使用该区域:
client.setRegion(Region.getRegion(Regions.EU_WEST_1));
我们目前正在开发一个示例开发人员身份验证身份后端以及我们希望很快发布的iOS / Android应用程序。