Amazon web services 在Android中使用以下代码时,无法从链中的任何提供商加载AWS凭据
String cognitoIdentityId=sp.getString(“aws_identity”,”); 字符串openIdToken=sp.getString(“aws_-token”,”)Amazon web services 在Android中使用以下代码时,无法从链中的任何提供商加载AWS凭据,amazon-web-services,amazon-cognito,Amazon Web Services,Amazon Cognito,String cognitoIdentityId=sp.getString(“aws_identity”,”); 字符串openIdToken=sp.getString(“aws_-token”,”) Map logins=newhashmap(); logins.put(“cognito identity.amazonaws.com”,openIdToken); GetCredentialsForIdentity请求getCredentialsRequest= 新GetCredentialsF
Map logins=newhashmap();
logins.put(“cognito identity.amazonaws.com”,openIdToken);
GetCredentialsForIdentity请求getCredentialsRequest=
新GetCredentialsForIdentityRequest()
.withIdentityId(cognitoIdentityId)
.具有登录名(登录名);
AmazonCongnitoIdentityClient cognitoIdentityClient=新的AmazonCongnitoIdentityClient();
GetCredentialsForIdentityResult getCredentialsResult=cognitoIdentityClient.getCredentialsForIdentity(getCredentialsRequest);
凭证凭证=getCredentialsResult.getCredentials();
AWSSessionCredentials sessionCredentials=新的基本会话凭据(
credentials.getAccessKeyId(),
credentials.getSecretKey(),
credentials.getSessionToken()
);
错误与语法有关
正确的代码是
cognitoIdentityId = sp.getString("aws_identity", "");
String openIdToken = sp.getString("aws_token", "");
Map<String, String> logins = new HashMap<>();
logins.put("cognito-identity.amazonaws.com", openIdToken);
GetCredentialsForIdentityRequest getCredentialsRequest =
new GetCredentialsForIdentityRequest()
.withIdentityId(cognitoIdentityId)
.withLogins(logins);
AmazonCognitoIdentityClient cognitoIdentityClient = new AmazonCognitoIdentityClient(new AnonymousAWSCredentials());
GetCredentialsForIdentityResult getCredentialsResult = cognitoIdentityClient.getCredentialsForIdentity(getCredentialsRequest);
Credentials credentials = getCredentialsResult.getCredentials();
AWSSessionCredentials sessionCredentials = new BasicSessionCredentials(
credentials.getAccessKeyId(),
credentials.getSecretKey(),
credentials.getSessionToken()
);
AWS_KEY = sessionCredentials.getAWSAccessKeyId();
AWS_SECRET = sessionCredentials.getAWSSecretKey();
AWS_SESSION = sessionCredentials.getSessionToken();
cognitoIdentityId=sp.getString(“aws_identity”,”);
字符串openIdToken=sp.getString(“aws_-token”,”);
Map logins=new HashMap();
logins.put(“cognito identity.amazonaws.com”,openIdToken);
GetCredentialsForIdentity请求getCredentialsRequest=
新GetCredentialsForIdentityRequest()
.withIdentityId(cognitoIdentityId)
.具有登录名(登录名);
AmazonCongnitoIdentityClient cognitoIdentityClient=新的AmazonCongnitoIdentityClient(新的匿名AWSCredentials());
GetCredentialsForIdentityResult getCredentialsResult=cognitoIdentityClient.getCredentialsForIdentity(getCredentialsRequest);
凭证凭证=getCredentialsResult.getCredentials();
AWSSessionCredentials sessionCredentials=新的基本会话凭据(
credentials.getAccessKeyId(),
credentials.getSecretKey(),
credentials.getSessionToken()
);
AWS_KEY=sessionCredentials.getAWSAccessKeyId();
AWS_SECRET=sessionCredentials.getAWSSecretKey();
AWS_SESSION=sessionCredentials.getSessionToken();
您遇到了什么错误?“无法从链中的任何提供商加载AWS凭据”是一个确切的例外@juansebastian您得到了哪一个是有问题的行?我怀疑您没有有效的访问密钥id和密钥加载到您的代码中,因此您无法访问aws资源。
cognitoIdentityId = sp.getString("aws_identity", "");
String openIdToken = sp.getString("aws_token", "");
Map<String, String> logins = new HashMap<>();
logins.put("cognito-identity.amazonaws.com", openIdToken);
GetCredentialsForIdentityRequest getCredentialsRequest =
new GetCredentialsForIdentityRequest()
.withIdentityId(cognitoIdentityId)
.withLogins(logins);
AmazonCognitoIdentityClient cognitoIdentityClient = new AmazonCognitoIdentityClient(new AnonymousAWSCredentials());
GetCredentialsForIdentityResult getCredentialsResult = cognitoIdentityClient.getCredentialsForIdentity(getCredentialsRequest);
Credentials credentials = getCredentialsResult.getCredentials();
AWSSessionCredentials sessionCredentials = new BasicSessionCredentials(
credentials.getAccessKeyId(),
credentials.getSecretKey(),
credentials.getSessionToken()
);
AWS_KEY = sessionCredentials.getAWSAccessKeyId();
AWS_SECRET = sessionCredentials.getAWSSecretKey();
AWS_SESSION = sessionCredentials.getSessionToken();