Создать идентификатор пула когнитивов из aws cli или nodeJS получил ошибку, что не так с параметрами?

Я создал скрипты nodeJS для настройки своего идентификатора пула AWS Cognito с использованием класса CreateIdentityPool:

var cognitoidentity = new AWS.CognitoIdentity();
var params = {
    "IdentityPoolName": "samplePool",
    "AllowUnauthenticatedIdentities": true,
    "CognitoIdentityProviders": [
      {
        "ClientId": "xxxxxxxxxxx-qea4ebra0gipd0krefi37v8f48svrp8e.apps.googleusercontent.com", /* google client ID */
        "ProviderName": "accounts.google.com"
      }
    ],
    "DeveloperProviderName": "mypool"
};
cognitoidentity.createIdentityPool(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

но у него есть ошибки ниже:

{[ValidationException: обнаружена 1 ошибка проверки: значение 'xxxxxxxxxxx-qea4ebra0gipd0krefi37v8f48svrp8e.apps.googleusercontent.com' at 'cognitoIdentityProviders.1.member.clientId' не соответствует ограничению: участник должен соответствовать шаблону регулярного выражения +] [\ w _ message : 'Обнаружена 1 ошибка проверки: Значение \' xxxxxxxxxxx-qea4ebra0gipd0krefi37v8f48svrp8e.apps.googleusercontent.com \ 'at \' cognitoIdentityProviders.1.member.clientId \ 'не соответствует ограничению: участник должен удовлетворять шаблону регулярного выражения: [\ w _] + ', код:' ValidationException ', время: Вт 31 января 2017 г. 21:11:48 GMT + 1100 (AEDT), requestId:' ad2b3366-e79d-11e6-b2e7-578f32ddcea5 ', statusCode: 400, повторная попытка: false , retryDelay: 45.71310137398541}

Во-вторых, я попытался сначала создать идентификатор пула идентификаторов без CognitoIdentityProviders, а затем запустить обновление с использованием класса UpdateIdentityPool, чтобы добавить CognitoIdentityProviders (разблокировать поставщиков аутентификации). Но это была та же проблема, что и выше.

Третий способ, я попытался создать идентификатор пула идентификаторов с помощью аргументов --cognito-identity-sizes из aws cli, и все равно получил ту же проблему:

Произошла ошибка (ValidationException) при вызове операции UpdateIdentityPool: обнаружена 1 ошибка проверки: значение 'xxxxxxxxxxx-qea4ebra0gipd0krefi37v8f48svrp8e' в 'cognitoIdentityProviders.1.member.clientId' не соответствует ограничению: участник должен соответствовать шаблону регулярного выражения]: [

В-четвертых, я попытался создать идентификатор пула идентификаторов без --cognito-identity-provider из aws cli, а затем обновить его из aws cli (добавить --cognito-identity-provider). это была все та же проблема.

Очень расстроен этой проблемой, я должен установить ее с nodeJS. Поэтому, пожалуйста, не предлагайте разблокировать поставщиков аутентификации из Консоли AWS. Есть очень плохие ссылки по этому вопросу. Очень признателен, если вы можете связать меня с решенными ссылками.

Спасибо


person Mahdi Ridho    schedule 31.01.2017    source источник


Ответы (1)


Вы используете CognitoIdentityProviders, но это для пула пользователей AWS Cognito. Вам нужно установить SupportedLoginProviders, чтобы он работал. Нравится:

var params = {
    "IdentityPoolName": "samplePool",
    "AllowUnauthenticatedIdentities": true,
    "SupportedLoginProviders": {
        "accounts.google.com": "xxxxxxxxxxx-qea4ebra0gipd0krefi37v8f48svrp8e.apps.googleusercontent.com",
     }
};
person doorstuck    schedule 01.02.2017
comment
Вау, я не подозреваю об этом решении. Раньше я думал, что это похоже на псевдоним, поэтому я заполнил объект значения следующим образом: SupportedLoginProviders: {accounts.google.com: google} Теперь он работает Спасибо, дверь застряла - person Mahdi Ridho; 02.02.2017
comment
Я снова застрял в параметрах для провайдеров твиттера. Для ввода ConsumerKey и ConsumerSecret требуется 2 параметра. В то время как SupportedLoginProviders будет принимать объект только с одной ключевой строкой и одной строкой значений: keyname1 = value1, keyname2 = value2, ... и т. Д. {Provider1: accessid1, provider2: accessid2, ... и т. Д.} Как заполнить значение accessid с провайдером твиттера, у которого есть 2 ключа ConsumerKey и ConsumerSecret? - person Mahdi Ridho; 03.02.2017
comment
@MahdiRidho попробуй поставить запятую; между ключом и секретом: key;secret. И пользуйся провайдером api.twitter.com. - person doorstuck; 03.02.2017
comment
да ты прав. это нужно; это образец: api.twitter.com: ConsumerKey; ConsumerSecret Спасибо, что снова помогли мне :-) - person Mahdi Ridho; 03.02.2017