0

У меня возникли проблемы с интеграцией 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) 

ответ

0

Андроида код у вас есть есть получение учетных данных из Cognito удостоверения пула, который не то же самое, как Cognito пользователя Pool.

Я не уверен, какой из них вы хотите использовать, но если код Android правильный, и вы хотите сделать вход через Twitter/FB/etc. (который представляет собой пул идентификаторов), вы должны установить AuthorizationType по вашим API-интерфейсам API на AWS_IAM. Похоже, что API, вероятно, настроен с помощью Cognito Authorizer, который предназначен для функции «Пулы пользователей».

+0

Спасибо. Вы правы, я установил учетные данные для Cognito Identity Pool. На самом деле, мне просто нужно было установить вереск с помощью токена UserPool, но я не мог понять, как, поскольку сгенерированный SDK не очень гибкий. Оказалось, что возникла проблема с бэкэнд с конфигурацией пропусков. После его создания генерируемый SDK добавил этот параметр в метод (@Parameter ( name = "Авторизация", location = "header") и voila! –

Смежные вопросы