AWS Cognito не может установить учетные данные для CognitoIdentityCredentials

У меня возникла проблема с настройкой учетных данных для AWS Cognito.

Ниже приведен код из AWS amazon-cognito-identity-js в случае использования 4. .

AWS.config.credentials = new AWS.CognitoIdentityCredentials({
            IdentityPoolId : '...', // your identity pool id here
            Logins : {
                // Change the key below according to the specific region your user pool is in.
                'cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>' : result.getIdToken().getJwtToken()
            }
        });

Я проверил, что отправляю правильные IdentityPoolId и Logins методом CognitoIdentityCredentials, но в качестве возврата получаю undefined для accessKeyId и sessionToken.

Ниже то, что я получил. CognitoIdentityCredentials {expired: true, expireTime: null, accessKeyId: undefined, sessionToken: undefined, params: Object…}

Есть идеи, как это исправить?


person Ohsik    schedule 03.04.2017    source источник
comment
Вы решили эту проблему? У меня такая же проблема.   -  person martinenzinger    schedule 31.07.2018


Ответы (3)


После этого вы вызываете «AWS.config.credentials.get()», чтобы убедиться, что поставщик учетных данных запрашивает учетные данные?

person Rob Devereux    schedule 13.05.2017

Убедитесь, что вы установили AWS.config.region

e.g.

AWS.config.region = 'us-east-1';
person njgrisafi    schedule 18.08.2018

Присвоение результата new CognitoIdentityCredentitals() AWS.config.credentials на самом деле не дает учетных данных. Он просто устанавливает поставщика учетных данных. Вот почему, когда вы проверяете учетные данные, accessKeyId не определено, а expired установлено в true.

Если вы затем позвоните AWS.config.credentials.get(), провайдер запросит активные учетные данные.

Однако следует отметить еще одну вещь: вам не нужно вызывать AWS.config.credentials.get(), чтобы использовать службу, потому что каждая служба будет вызывать AWS.config.credentials.get() под капотом при настройке.

AWS.config.credentials = new AWS.CognitoIdentityCredentials({ ... });
console.log(AWS.config.credentials.expired); // false

/**
 *  The dynamoDB service will call AWS.config.credentials.get()
 *  under the hood when it is being set up,
 *  so you can immediately start using services like this.
*/
const dynamoDB = new AWS.DynamoDB();
console.log(AWS.config.credentials.expired); // true
person lemming    schedule 11.09.2020
comment
Здравствуй, друг. У меня аналогичный вопрос. Не могли бы вы помочь мне решить ее? stackoverflow.com/questions/67102738 / - person Shahab.es; 08.06.2021