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

Android aws cognito登录令牌无效。不是Cognito代币,android,amazon-web-services,amazon-cognito,Android,Amazon Web Services,Amazon Cognito,我正试图让aws android cognito只使用开发者身份验证的身份。但得到以下异常(sdk版本2.2.16) 我交叉检查了identityId和identityPoolId,两个值都是正确的 在loginsMap中,我使用key作为“cognito-identity.amazonaws.com”并使用token作为从服务器后端接收的openId令牌 正在我的androidAWSABStractCognitodeveloperEntityProvider类的refresh和getIdent

我正试图让aws android cognito只使用
开发者身份验证的身份
。但得到以下异常(sdk版本2.2.16)

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

在loginsMap中,我使用key作为“
cognito-identity.amazonaws.com
”并使用token作为从服务器后端接收的openId令牌

正在我的android
AWSABStractCognitodeveloperEntityProvider
类的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)

您应该在登录映射中将开发人员提供者名称作为键,如果需要,SDK将负责将其旋转为“cognito identity.amazonaws.com”

您必须做的另一件事是更新从后端获得的标识id以及令牌。如果SDK缓存中的标识id是A,并且令牌表示它属于标识id B,那么我们将抛出“nota Cognito token.”错误。理想情况下,您应该使用该方法在从后端刷新标识id和令牌之后更新它们


更详细地解释了这一点。您还应该查看我们的应用程序中的流程。希望这能有所帮助。

我在refresh中保留了update(identityid,token)以及getidentityid方法。此外,从服务器接收到的相同标识ID和令牌,如果我尝试使用iOS SDK,则可以正常工作。我使用的代码与示例应用程序中提供的代码相同,但示例应用程序没有在登录地图中设置“cognito identity.amazonaws.com”。它在中的登录映射中添加开发人员提供程序名称。你也改变了吗?是的,我删除了“cognito identity.amazonaws.com”,改为使用提供者名称。现在它正在工作。谢谢你的帮助@ChetanMehta,我们在哪里可以找到最新的aws cognito ios sdk示例?SDK的最新版本是2.4.1,但示例使用的是2.2.X。这两个版本之间有很多变化。请让我知道任何使用iOS SDK 2.4.1的工作示例/示例。@ChetanMehta我面临着类似的问题,当我将应用程序长期留在后台时,令牌将过期并抛出错误。是的,我有物联网后端的异常处理程序,它在那里工作正常