Имея проблему с помощью Cognito и API шлюза доступа в REST API,Android AWS APIGateway Authentication HttpURLConnection
Я не могу за жизнь мне найти простой пример того, как назвать обеспеченного REST API на нашем сервере AWS ,
Я называю
CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
ProfileViewActivity.this, // get the context for the current activity
AMAZON_COGNITO_IDENTITY_POOL_ID, // your identity pool id
Regions.US_EAST_1 //Region
);
, а затем попытаться сделать вызов к нашему серверу, который является частью этого пула. Я продолжаю возвращаться «Запрещено».
Что делать с полномочиямиProvider в заголовках HttpURLConnection?
ОБНОВЛЕНО:
Ok, используя APIGateWay правильный путь с AWS SDK сгенерированного однако не знаете, как изменить сгенерированный файл:
private class MyAsyncTask extends AsyncTask<String, Void, String> {
private TextView textView;
public MyAsyncTask() {
}
@Override
protected String doInBackground(String... strings) {
AWSCredentialsProvider credenetialsProvider = new CognitoCachingCredentialsProvider(
ProfileViewActivity.this, // activity context
AMAZON_COGNITO_IDENTITY_POOL_ID, // Cognito identity pool id
Regions.US_EAST_1 // region of Cognito identity pool
);
ApiClientFactory factory = new ApiClientFactory()
.credentialsProvider(credenetialsProvider)
.region("us-east-1")
.endpoint("https://myendpoint")
.apiKey("xxxxxxxxxxxxxxxxxxxxxxx");
// MyClient is the AWS Android SDK Generated class
final MyClient client = factory.build(MyClient.class);
client.feedGet();
String str = client.testGet().toString();
Log.d("###", "here after test" +client.testGet().toString());
return "DONE";
}
@Override
protected void onPostExecute(String temp) {
Log.d("####", "onPostExecute");
}
}
, а затем
private class MyAsyncTask extends AsyncTask<String, Void, String> {
private TextView textView;
public MyAsyncTask() {
}
@Override
protected String doInBackground(String... strings) {
AWSCredentialsProvider credenetialsProvider = new CognitoCachingCredentialsProvider(
ProfileViewActivity.this, // activity context
AMAZON_COGNITO_IDENTITY_POOL_ID, // Cognito identity pool id
Regions.US_EAST_1 // region of Cognito identity pool
);
ApiClientFactory factory = new ApiClientFactory()
.credentialsProvider(credenetialsProvider)
.region("us-east-1")
.endpoint("https://myendpoint")
.apiKey("xxxxxxxxxxxxxxxxxxxxxxx");
// MyClient is the AWS Android SDK Generated class
final MyClient client = factory.build(MyClient.class);
client.feedGet();
String str = client.testGet().toString();
Log.d("###", "here after test" +client.testGet().toString());
return "DONE";
}
@Override
protected void onPostExecute(String temp) {
Log.d("####", "onPostExecute");
}
}
=== ====== MyClient.java - AWS Android SDK Сгенерированный файл
@com.amazonaws.mobileconnectors.apigateway.annotation.Service(endpoint = https:myaws_server)
public interface MyClient {
@com.amazonaws.mobileconnectors.apigateway.annotation.Operation(path = \"/test\", method = "GET")
Empty testGet();
Вы используете сгенерированный Android API шлюза SDK? В этом случае вы должны иметь возможность создать экземпляр нового клиента шлюза API, используя поставщик учетных данных из Cognito, и эти запросы должны работать. Это может помочь, если вы поделились кодом, в котором вы используете клиент шлюза API. –
Я обновил вопрос с помощью кода, который я использую, - изменил его на API Gateway, но не смог с ошибкой прокси – justdan0227
Здравствуйте. Получили ли вы успех? Я также сталкиваюсь с тем же вопросом – Krishna