我想让亚马逊认知能够发挥作用。如果我运行代码从独立的java程序生成登录令牌就可以了。
public class cognito extends HttpServlet
{
public static void main(String[] args) throws Exception {
AWSCredentials credentials = new BasicAWSCredentials("*******", "********");
AmazonCognitoIdentityClient client =
new AmazonCognitoIdentityClient(credentials);
client.setRegion(Region.getRegion(Regions.EU_WEST_1));
GetOpenIdTokenForDeveloperIdentityRequest tokenRequest =
new GetOpenIdTokenForDeveloperIdentityRequest();
tokenRequest.setIdentityPoolId("*************");
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("test", "AmazonCognitoIdentity");
//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);
}
}
然而,当我从redhat linux服务器上的servlet运行此代码时,它总是超时。 任何建议都会有所帮助
答案 0 :(得分:0)
map.put(“test”,“AmazonCognitoIdentity”);
您确定您的开发者提供商名称是“test”吗?
您可以在您的认知身份库编辑页面中看到它。 “AmazonCognitoIdentity”应该是您自己唯一的用户ID。
答案 1 :(得分:0)
没有实际的例外,很难说出确切的问题是什么。可能是在servlet引擎中运行的其他东西设置的套接字超时比从命令行运行时的默认值要大得多。您可能希望使用此类http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/ClientConfiguration.html的方法显式设置连接和套接字超时,并将其传递给标识客户端构造函数。