Android aws cognito无效的登录令牌。不是Cognito令牌

时间:2016-05-13 11:35:30

标签: android amazon-web-services amazon-cognito

我正在尝试使用developer authenticated identities制作aws android cognito。但得到以下异常(sdk版本2.2.16)。

我已经交叉检查了identityId和identityPoolId,两个值都是正确的。

在loginsMap中,我使用键作为" cognito-identity.amazonaws.com"和token作为从我的服务器后端收到的openId令牌。

我的android AWSAbstractCognitoDeveloperIdentityProvider类的refresh和getIdentityId方法中设置了loginsMap。

有人遇到过这种类似的问题吗?

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)

1 个答案:

答案 0 :(得分:2)

您应该将开发者提供者名称作为密钥放在登录映射中,如果需要,SDK将负责将其转发给“cognito-identity.amazonaws.com”。

您必须做的另一件事是更新从后端获得的身份ID以及令牌。如果SDK缓存中的身份标识为A且标记表明它属于标识ID B,则我们将抛出“非Cognito标记”。错误。理想情况下,您应该使用update()方法在从后端刷新身份ID和令牌后更新它们。

Developer Authenticated Identities更详细地解释了这一点。您还应该查看sample app中的流程。希望这会有所帮助。