У меня возникли проблемы с интеграцией Cognito с ApiGateway. Сначала я вхожу в систему с Cognito, там нет проблем, я получаю все жетоны. Затем мне нужно позвонить в API Gateway. Я использую автоматически сгенерированный SDK для Android. Я следую примеру здесь: http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-generate-sdk-android.html, но всегда получаю ту же ошибку.AWS Api Gateway и Cognito на Android - Ошибка 401
CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
context,
CognitoConstants.IDENTITY_POOL_ID,
CognitoConstants.REGION);
String token = cognitoUserSession.getIdToken().getJWTToken();
Map<String, String> logins = new HashMap<>();
logins.put(CognitoConstants.LOGIN_MAP_KEY, token);
credentialsProvider.setLogins(logins);
ApiClientFactory factory = new ApiClientFactory()
.credentialsProvider(credentialsProvider);
client = factory.build(ExampleAPIClient.class);
client.exampleApi1AccountsGet();
Результат:
ApiClientException com.amazonaws.mobileconnectors.apigateway.ApiClientException: {"message":"Unauthorized"}
(Service: BancarAPIClient; Status Code: 401; Error Code: null; Request ID: 3679cd4b-eefc-11e6-9d00-f99040a8ed67)
Спасибо. Вы правы, я установил учетные данные для Cognito Identity Pool. На самом деле, мне просто нужно было установить вереск с помощью токена UserPool, но я не мог понять, как, поскольку сгенерированный SDK не очень гибкий. Оказалось, что возникла проблема с бэкэнд с конфигурацией пропусков. После его создания генерируемый SDK добавил этот параметр в метод (@Parameter ( name = "Авторизация", location = "header") и voila! –