2017-02-09 21 views
0

CognitoとApiGatewayの統合に問題があります。 最初に私はCognitoでサインインします。問題はありません。私はすべてのトークンを取得します。 その後、私はAPIゲートウェイを呼び出す必要があります。私はAndroid用に自動生成されたSDKを使用しています。 私はここの例に従っています:http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-generate-sdk-android.htmlしかし、私はいつも同じエラーが発生します。Android上のAWS Api GatewayとCognito - エラー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

あなたがそこに持っているAndroidのコードがCognitoユーザープールと同じものではありませんCognitoアイデンティティプールからの資格情報を取得しています。

あなたはどちらを使いたいのですが、Androidコードが正しい場合にTwitter/FB /などでサインインしたい場合は、 (IDプール)、APIゲートウェイメソッドのAuthorizationTypeAWS_IAMに設定します。 APIはおそらくUser Pools機能用のCognito Authorizerで設定されているようです。

+0

ありがとうございました。あなたは正しいです、私はCognito Identity Poolの資格を設定していました。 実際、私はちょうどUserPoolトークンでヘッダーを設定する必要があったが、生成されたSDKの柔軟性があまり高くないので、どのように見つけられなかったか。 バックエンドに問題があり、設定が間違っていることが判明しました。修正された後、生成されたSDKは、 (@パラメータ( name = "Authorization"、 location = "header")のメソッドでこのパラメータを追加しました とvoila! –

関連する問題