2016-05-13 63 views
1

aws android cognitoはdeveloper authenticated identitiesでのみ動作させようとしています。しかし、以下の例外を取得する(sdkバージョン2.2.16)。Android aws cognito無効なログイントークン。 Cognitoトークンではありません

私はidentityIdとidentityPoolIdをクロスチェックしており、両方の値が正しいです。

loginsMapでは、キーを「cognito-identity.amazonaws.com」とし、トークンを自分のサーバーのバックエンドから受け取ったopenIdトークンとして使用しています。

loginsMapは、アンドロイドAWSAbstractCognitoDeveloperIdentityProviderクラスのrefreshおよびgetIdentityIdメソッドに設定されています。

誰もこの種の似たような問題に直面していますか?

com.amazonaws.services.cognitoidentity.model.NotAuthorizedException: Invalid login token. Not a Cognito token. (Service: AmazonCognitoIdentity; Status Code: 400; Error Code: NotAuthorizedException; Request ID: a270a26a-18fa-11e6-add3-c1b3dbd555de) 
                    at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:716) 
                    at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:392) 
                    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:199) 
                    at com.amazonaws.services.cognitoidentity.AmazonCognitoIdentityClient.invoke(AmazonCognitoIdentityClient.java:533) 
                    at com.amazonaws.services.cognitoidentity.AmazonCognitoIdentityClient.getCredentialsForIdentity(AmazonCognitoIdentityClient.java:468) 
                    at com.amazonaws.auth.CognitoCredentialsProvider.populateCredentialsWithCognito(CognitoCredentialsProvider.java:627) 
                    at com.amazonaws.auth.CognitoCredentialsProvider.startSession(CognitoCredentialsProvider.java:553) 
                    at com.amazonaws.auth.CognitoCredentialsProvider.refresh(CognitoCredentialsProvider.java:503) 
                    at com.amazonaws.auth.CognitoCachingCredentialsProvider.refresh(CognitoCachingCredentialsProvider.java:463) 
                    at com.amazonaws.auth.CognitoCachingCredentialsProvider.getIdentityId(CognitoCachingCredentialsProvider.java:414) 
                    at com.amazonaws.auth.CognitoCredentialsProvider.populateCredentialsWithCognito(CognitoCredentialsProvider.java:621) 
                    at com.amazonaws.auth.CognitoCredentialsProvider.startSession(CognitoCredentialsProvider.java:553) 
                    at com.amazonaws.auth.CognitoCredentialsProvider.refresh(CognitoCredentialsProvider.java:503) 
                    at com.amazonaws.auth.CognitoCachingCredentialsProvider.refresh(CognitoCachingCredentialsProvider.java:463) 

答えて

2

あなたはログインマップにキーとして開発プロバイダ名を入れなければならないし、必要であればSDKはあなたのために、「cognito-identity.amazonaws.com」にそれを回転させるの世話をします。

もう1つのことは、トークンとともにバックエンドから取得したIDを更新することです。 SDKキャッシュのIDがAで、トークンがID ID Bに属していることを示す場合は、「Not Cognitoトークン」を送出します。エラー。理想的には、update()メソッドを使用して、バックエンドからリフレッシュされたIDとトークンの両方を更新する必要があります。

Developer Authenticated Identitiesはこれをより詳細に説明しています。 sample appのフローも見てください。お役に立てれば。

+0

私はリフレッシュとgetidentityidメソッドの更新(identityid、token)を保持しています。また、iOS SDKから試してみると、私のサーバーから受け取った同じidentityidとトークンが機能します。サンプルアプリケーションで提供されているのと同じコードを使用しています。 –

+0

サンプルアプリケーションでは、ログインマップに "cognito-identity.amazonaws.com"が設定されていません。 [DeveloperAuthenticationTask](https://github.com/awslabs/aws-sdk-android-samples/blob/master/CognitoSyncDemo/src/com/amazonaws/cognito/sync/demo)のログインマップに開発者プロバイダ名を追加します。 /DeveloperAuthenticationTask.java#L54)。あなたもそれを変更しましたか? –

+0

ええ、私は "cognito-identity.amazonaws.com"を削除し、その代わりにプロバイダ名を使用しました。そして、今働いています。ご協力いただきありがとうございます !! –

関連する問題