2

Мы выполнили интеграцию AWS для доступа без аутентификации, но когда мы пытаемся пройти аутентифицированный доступ, мы получаем ошибку InvalidParameterException: Пожалуйста, предоставьте действительный открытый провайдер.Как интегрировать AWS Cognito только для разработчиков, прошедших проверку подлинности?

мы используем следующие шаги для интеграции AWS в приложение:

DeveloperAuthenticationProvider developerProvider = new DeveloperAuthenticationProvider(
        AppConstants.AWS_ACCOUNT_ID, AppConstants.IdentityPoolId, Regions.EU_WEST_1 
      ); 
CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
        getActivity(), 
        developerProvider, 
        Regions.EU_WEST_1); 

//set Logings for Authenticated Access 
HashMap<String, String> loginsMap = new HashMap<String, String>(); 
      loginsMap.put(developerProvider.getProviderName(), Token); 
      credentialsProvider.setLogins(loginsMap); 
      credentialsProvider.refresh(); 

Мы сделали с классом DeveloperAuthenticationProvider, который простирается AWSAbstractCognitoDeveloperIdentityProvider; где мы предоставляем имя поставщика разработчика (DeveloperProvider.getProviderName()), а токен - как токен OpenID.

Но я получаю ниже ошибки:

Caused by: com.amazonaws.services.cognitoidentity.model.InvalidParameterException: Please provide a valid public provider 

и иногда я получаю ошибки: идентичности ID запрещено. Я не мог понять причины этих ошибок. Я указал следующие URL: https://docs.aws.amazon.com/cognito/devguide/identity/developer-authenticated-identities/, https://mobile.awsblog.com/post/Tx3E3NJURV1LNV1/Integrating-Amazon-Cognito-using-developer-authenticated-identities-An-end-to-en.

Просьба предложить мне, как я могу устранить эти ошибки и дать некоторые обновленные ссылки, где я могу понять причины этих ошибок.

+0

Не могли бы вы поделиться кодом в своем поставщике-разработчиком, где вы назначаете токен? Из ошибки, которую вы описываете, кажется, что вы назначаете ее карте входа, а не полю токена. –

ответ

0

Hurreyyy, я решил проблему аутентификации разработчика для службы AWS Cognito. Его легко понять, но довольно сложно реализовать.

Вот решение:

CognitoSyncClientManager.init(this, cognitoParams); CognitoSyncClientManager.credentialsProvider.clearCredentials(); CognitoSyncClientManager.addLogins(AppConstants.DEVELOPER_PROVIDER, strToken); и вы можете получить CognitoSyncClientManager от CognitoSyncDemo. Спасибо всем

+1

Где AppConstants? Что это? –

+0

Я предполагаю, что AppConstants является его обычным классом, где DEVELOPER_PROVIDER может быть 'login.companyname.appname' i.e. Это имя поставщика-разработчика, которое вы предоставили в настройке cognito. – inblueswithu

0

Убедитесь, что значение, которое вы возвращаете с developerProvider.getProviderName(), совпадает с тем, что вы зарегистрировали на консоли Amazon Cognito, как описано в шагах под номером Associate Developer Provider section of the Developer Authenticated Identities topic in the Amazon Cognito Developer Guide.

+0

Scott Willeke, Спасибо за ваш ответ. Да, разработчик.getProviderName правильный. и я также тестировал токен на [http://jwt.io/]. Это дает мне правильную информацию, но с недопустимой подписью. – immodi

+0

возвращает ошибку: 'Caused by: com.amazonaws.services.cognitoidentity.model.InvalidParameterException: Пожалуйста, предоставьте действительный общедоступный провайдер (Сервис: AmazonCognitoIdentity; Код состояния: 400; Код ошибки: InvalidParameterException; Идентификатор запроса: daca4cc0-2ae0-11e5 -889e-39d5cbca50d0) ' – immodi

2

Похоже, вы устанавливаете токен в карте входа, а не в поле маркера вашего поставщика-разработчика, как указано в developer guide. Вы также можете обратиться к нашему end-to-end example, доступному на GitHub, который включает пример кода для iOS и Android.

+0

Я ссылался на эти документы. Я передаю имя поставщика разработчика и токен в качестве параметров входа для CognitoSyncClientManager. Но он возвращает ту же ошибку, о которой я упомянул в предыдущих комментариях. – immodi

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