尝试从cognito提取用户详细信息时,缺少身份验证令牌错误

时间:2020-09-15 20:18:50

标签: java amazon-web-services amazon-cognito

我正在尝试使用用户名从cognito中获取用户详细信息,但出现此错误

Exception in thread "main" com.amazonaws.services.cognitoidp.model.AWSCognitoIdentityProviderException: Missing Authentication Token (Service: AWSCognitoIdentityProvider; Status Code: 400; Error Code: MissingAuthenticationTokenException; Request ID: 2b5226c1-49cc-4d55-bafe-08b371d38b50; Proxy: null)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1811)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleServiceErrorResponse(AmazonHttpClient.java:1395)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1371)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1145)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:802)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:770)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:744)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:704)
at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:686)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:550)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:530)
at com.amazonaws.services.cognitoidp.AWSCognitoIdentityProviderClient.doInvoke(AWSCognitoIdentityProviderClient.java:7825)
at com.amazonaws.services.cognitoidp.AWSCognitoIdentityProviderClient.invoke(AWSCognitoIdentityProviderClient.java:7792)
at com.amazonaws.services.cognitoidp.AWSCognitoIdentityProviderClient.invoke(AWSCognitoIdentityProviderClient.java:7781)
at com.amazonaws.services.cognitoidp.AWSCognitoIdentityProviderClient.executeAdminGetUser(AWSCognitoIdentityProviderClient.java:1307)
at com.amazonaws.services.cognitoidp.AWSCognitoIdentityProviderClient.adminGetUser(AWSCognitoIdentityProviderClient.java:1278)
at getUserDetails.main(getUserDetails.java:24)

以下是我的代码:

    import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.AnonymousAWSCredentials;
import com.amazonaws.services.cognitoidp.AWSCognitoIdentityProvider;
import com.amazonaws.services.cognitoidp.AWSCognitoIdentityProviderClientBuilder;
import com.amazonaws.services.cognitoidp.model.AdminGetUserRequest;
import com.amazonaws.services.cognitoidp.model.AdminGetUserResult;

public class getUserDetails {

    public static void main(String[] args) {
        String app_client_id ="xxxxxxxx";
        String app_client_secret ="xxxxxxxx";
        String user_pool_id ="xxxxxxxx";
        String region = "xxxxxxxx";
        AnonymousAWSCredentials awsCreds = new AnonymousAWSCredentials();
        AWSCognitoIdentityProvider client = AWSCognitoIdentityProviderClientBuilder.standard()
                .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
                .withRegion(region)
                .build();

        AdminGetUserRequest adminGetUserRequest = new AdminGetUserRequest()
                .withUserPoolId("user_pool_id")
                .withUsername("Facebook_10223918658622607");
        AdminGetUserResult adminGetUserResult = client.adminGetUser(adminGetUserRequest);

    }
}

这需要任何管理员凭据吗?如果是这样,我该如何输入?还有其他方法可以实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

public class getUserDetails {

    public static void main(String[] args) {
        String app_client_id ="xxxxxxxxxxx";
        String app_client_secret ="xxxxxxxxxxxxxxx";
        String user_pool_id ="xxxxxxxxxxxx";
        String region = "xxxxxxxxxxxxxxxx";
        String AWS_ACCESS_KEY = "xxxxxxxxxxxxxxxxxxxx";
        String AWS_SECRET_KEY = "xxxxxxxxxxxxxxxxxxxx";
//        AnonymousAWSCredentials awsCreds = new AnonymousAWSCredentials();
        AWSCredentials awsCreds = new BasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY);
        AWSCognitoIdentityProvider client = AWSCognitoIdentityProviderClientBuilder.standard()
                .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
                .withRegion(region)
                .build();
        AdminGetUserRequest adminGetUserRequest = new AdminGetUserRequest()
                .withUserPoolId(user_pool_id )
                .withUsername("abcd");

        try {
            AdminGetUserResult adminGetUserResult = client.adminGetUser(adminGetUserRequest);
        }catch (UserNotFoundException e) {
            System.out.println("User not found");
        }
    }

}

对于正在寻找答案的任何人,我们必须提供AWS_ACCESS_KEY,AWS_SECRET_KEY才能使用AdminGetUserRequest