Amazon web services 在Android中使用以下代码时,无法从链中的任何提供商加载AWS凭据

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

String cognitoIdentityId=sp.getString(“aws_identity”,”); 字符串openIdToken=sp.getString(“aws_-token”,”)

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();