2016-05-13 4 views
1

Я пытаюсь сделать работу awault android cognito только с developer authenticated identities. Но получить ниже исключение (sdk версия 2.2.16).Android aws cognito Недопустимый токен входа. Не токман Cognito

У меня есть перекрестная проверка identityId и identityPoolId, и оба значения верны.

В loglogMap я использую ключ как «cognito-identity.amazonaws.com» и токен как токен openId, полученный с моего конца сервера.

LoginsMap устанавливается в методе refresh и getIdentityId моего класса android AWSAbstractCognitoDeveloperIdentityProvider.

Любой, кто сталкивается с подобной проблемой?

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» для вас, если требуется.

Еще одна вещь, которую вы должны сделать, - это обновить идентификатор идентификатора, который вы получаете от своей задней части вместе с токеном. Если идентификатор идентификатора в кеше SDK равен A, а токен говорит, что он принадлежит идентификатору идентификатора B, мы будем бросать «Not a Cognito token». ошибка. В идеале вы должны использовать метод update() для обновления идентификатора и токена идентификатора после того, как они будут обновлены с вашего конца.

Developer Authenticated Identities объясняет это более подробно. Вы также должны посмотреть на поток в нашем sample app. Надеюсь это поможет.

+0

Я обновил (идентификатор, токен) в обновлении, а также метод getidentityid. Кроме того, тот же идентификатор и токен, полученные с моего сервера, если я пытаюсь использовать IOS SDK, он работает. И я использовал тот же код, что и в примере приложения. –

+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» и вместо этого использовал имя провайдера. И он работает сейчас. Спасибо за вашу помощь !! –

Смежные вопросы