Ich möchte Webservice mit Api-Gateway aufrufen, aber ein Problem mit Cognito. aber die Anwendung stürzt ab, ich habe keine Ahnung davon, bitte Jungs helfen, es zu lösen !!! mein Code ist wie untenCrash-Anwendung durch ApiClientException in Api Gateway
AwsActivity.java
class AwsActivity extends Activity {
private String AMAZON_COGNITO_IDENTITY_POOL_ID = "us-east-1**********";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new MyAsyncTask("1").execute();
}
private class MyAsyncTask extends AsyncTask<String, Void, String> {
private String userId = "";
public MyAsyncTask(String userId) {
this.userId = userId;
Log.d("111111111111", "111111111111");
}
@Override
protected String doInBackground(String... strings) {
Log.d("22222222222222222", "2222222222222222222");
AWSCredentialsProvider credenetialsProvider = new CognitoCachingCredentialsProvider(
AwsActivity.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://abcd")
.apiKey("gsjddjflkjdsljaskds");
// MyClient is the AWS Android SDK Generated class
final MyClient client = factory.build(MyClient.class);
client.viewprofileGet(userId);
// String str = client.testGet().toString();
Log.d("###", "here after test" + client.viewprofileGet(""));
return "DONE";
}
@Override
protected void onPostExecute(String temp) {
Log.d("####", "onPostExecute");
}
}}
MyClient.java
@com.amazonaws.mobileconnectors.apigateway.annotation.Service(endpoint = "https://abcde")
public interface MyClient {
@com.amazonaws.mobileconnectors.apigateway.annotation.Operation(path = "/loginclient", method = "GET")
Empty loginclientGet(
@com.amazonaws.mobileconnectors.apigateway.annotation.Parameter(name = "user_id", location = "query")
String userId);
}
Log Mein Fehler ist unter
07-01 06:35:17.840 17476-17558/com.example.android.awsapidemo E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
at java.util.concurrent.FutureTask.run(FutureTask.java:239)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:841)
Caused by: com.amazonaws.mobileconnectors.apigateway.ApiClientException: {"Message":"User: arn:aws:sts::686770309549:assumed-role/Cognito_bookmixnewUnauth_Role/CognitoIdentityCredentials is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:us-east-1:********9549:abcde/mycleint/GET/login/login"}
(Service: MyClient; Status Code: 403; Error Code: null; Request ID: 80ede0b7-3f77-13435e6-45345-24325435)
at com.amazonaws.mobileconnectors.apigateway.ApiClientHandler.handleResponse(ApiClientHandler.java:240)
at com.amazonaws.mobileconnectors.apigateway.ApiClientHandler.invoke(ApiClientHandler.java:93)
at $Proxy1.viewprofileGet(Native Method)
at com.example.android.awsapidemo.AwsActivity$MyAsyncTask.doInBackground(AwsActivity.java:63)
at com.example.android.awsapidemo.AwsActivity$MyAsyncTask.doInBackground(AwsActivity.java:37)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
... 4 more
plz Ihre Fehlerprotokolle von logcat hinzufügen –
Ich habe meine Fehler –
bin in der Lage zu sehen, wie dieser log - CognitoIdentityCredentials nicht auszuführen ist berechtigt: können einige Anmeldeinformationen Probleme oder einige api Schlüssel Probleme –