访问AWS API网关时发现“用户未找到异常”

时间:2017-01-30 11:20:36

标签: android amazon-web-services aws-api-gateway google-authentication aws-cognito

访问AWS API网关时,出现以下错误:

com.amazonaws.mobileconnectors.apigateway.ApiClientException:  {"errorMessage":"[NotFoundException]:'User not found: us-east-1:fb********6a'"} (Service: MyClient; Status Code: 500; Error Code: null; Request ID: 20*****e97)
01-30 16:21:59.367 24265-24598/com.myaws.android W/System.err:     at com.amazonaws.mobileconnectors.apigateway.ApiClientHandler.handleResponse(ApiClientHandler.java:267)
01-30 16:21:59.367 24265-24598/com.myaws.android W/System.err:     at com.amazonaws.mobileconnectors.apigateway.ApiClientHandler.invoke(ApiClientHandler.java:94)
01-30 16:21:59.367 24265-24598/com.myaws.android W/System.err:     at java.lang.reflect.Proxy.invoke(Proxy.java:393)
01-30 16:21:59.367 24265-24598/com.myaws.android W/System.err:     at $Proxy1.apiTeamRolesGet()
01-30 16:21:59.367 24265-24598/com.myaws.android W/System.err:     at com.myaws.android.MainActivity.performAws(MainActivity.java:323)
01-30 16:21:59.367 24265-24598/com.myaws.android W/System.err:     at com.myaws.android.MainActivity.access$000(MainActivity.java:55)
01-30 16:21:59.368 24265-24598/com.myaws.android W/System.err:     at com.myaws.android.MainActivity$1.run(MainActivity.java:213)


这是我的代码,我如何访问它们。

调用方法时onClick()函数

@Override
public void onClick(View v) {
    new Thread() {
        @Override
        public void run() {
            try {
                performAws();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }.start();
}

以下是performAws()方法:

private void performAws() {
    try {
        AccountManager am = AccountManager.get(MainActivity.this);
        Account[] accounts = am.getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE);

        String clientId = GOOGLE_CLIENT_ID;
        String scope = "audience:server:client_id:" + clientId;

        //Retrieve the google token
        String token = GoogleAuthUtil.getToken(getApplicationContext(), accounts[0].name, scope);

        //Set the google token in map
        Map<String, String> logins = new HashMap<>();
        logins.put("accounts.google.com", token);

        //Initialize amazon cognito credentials provider
        CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
                MainActivity.this, // Context
                IDENTITY_POOL_ID,
                Regions.US_EAST_1 // Region
        );

        //Set the google credentials
        credentialsProvider.setLogins(logins);

        //retrieve amazon cognito id
        String cognitoId = credentialsProvider.getIdentityId();
        Log.d("MainActivity", "cognitoId = " + cognitoId);

        ApiClientFactory factory = new ApiClientFactory()
                .credentialsProvider(credentialsProvider)
                .region("us-east-1")
                .apiKey(cognitoId);


        final MyClient myClient = factory.build((MyClient .class));
        myClient .apiTeamRolesGet();
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

这是我的MyClient类文件:

@com.amazonaws.mobileconnectors.apigateway.annotation.Service(endpoint = "https://abc.xyz.com")
public interface MyClient{
    /**
    * @return void
    */
    @com.amazonaws.mobileconnectors.apigateway.annotation.Operation(path = "/api/teamRoles", method = "GET")
        void apiTeamRolesGet();

}

1 个答案:

答案 0 :(得分:0)