0

私は数日前にこれを解決しようとしていましたが、問題の原因がわかりません。Cognito Identityでアイデンティティ/ユーザープールを認証するにはどうすればよいですか?

AWS CognitoにユーザープールとIDプールがあります。サンプルコードを実行してログインし、FacebookやGoogle+でユーザーを正常に登録しました。ログイン後、私はトークンを使用してSNSまたはSyncサービスを使用して認証することができます。

私はCognito Identityでユーザーを登録し、ログインした後にトークンを取得しました。ただし、次のステップでは、トークンを使用してIDプールに認証します。これは私がエラーを取得し続けるところです

私はIntegrating User Pools with Amazon Cognito Identityからの指示に従っており、それから私はそれを資格プロバイダにプールIDと一緒に渡そうとするトークンを取得します。

credentialsProvider.clear(); 
    credentialsProvider.withLogins(loginMap).refresh(); 

私のコードは、refresh()で失敗します。この時点でcredentialsProviderで抽象親クラスAWSAbstractCognitoIdentityProviderにgetIdentityId()を呼び出しAWSBasicCognitoIdentityProviderと(super.refreshに失敗)(リフレッシュ)がある

@Override 
public String getIdentityId() { 
    if (identityId == null) { 
     GetIdRequest getIdRequest = new GetIdRequest() 
       .withAccountId(getAccountId()) 
       .withIdentityPoolId(getIdentityPoolId()) 
       .withLogins(loginsMap); 

     appendUserAgent(getIdRequest, getUserAgent()); 

     GetIdResult getIdResult = cib.getId(getIdRequest); 

何があって私はloginsMapに入れた値、私は取得しませんエラー

ログイントークンが無効です。発行者はproviderNameと一致しません

at cid.getid(getIdRequest)

モバイルハブでアプリを作成してコードを生成すると、ほとんどのコードを無料でダウンロードできます。認証プロバイダ(FB、Googleなど)を設定できます。

私は間違っていますか?

ありがとうございました。

編集:ここに私が試したものの例があります トークンは常にマップ内のオブジェクトです。以下は、異なるキーが

  • "cognito-identity.amazonaws.com"
  • ユーザー・プールIDです - 私たちは、東1_xxxxxxxxx
  • ユーザープールARN - cognito-IDP:私たちは、東-1 :xxxxxxxxxxxx:userpool/us-east-1_xxxxxxxxx
+0

あなたはログイン用マップに入れているもののスニペットを提供できますか? –

+0

@JeffBailey私は完全なARNと上記のリンク(鍵として)に書かれているフォーマットを含む様々なCognito Identity Pool IDフォーマットを入れました。オブジェクトとしてのトークンは – d4c0d312

+0

ですが、特にフローの重要な部分ですあなたが見ているエラーを考慮すると、デバッグに役立つでしょう。あなたが提供したリンクをたどったときにあなたがしたことを含めることができますか? –

答えて

2

OK答えを見つけました。私はloginMapに間違ったキー値を入れていました。それは私がそれを見ていないのか分からない質問

にリンクドキュメントで述べているよう

それは

cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>

をする必要があります。

+1

うれしいことを聞いてうれしい! –

関連する問題