Amazon Cognito的用户池 - CredentialsError:配置中缺少凭据

Jee*_*eet 9 amazon-web-services amazon-cognito

我正在尝试借助教程创建Web App身份验证.这是我写的代码 -

var app = {};

app.configureCognito = function(){
    AWSCognito.config.region = 'us-east-1';

    var poolData = {
        UserPoolId: 'userPoolId',
        ClientId: 'ClientId'
    };

    var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
    var userData = {
                    UserName:'MyName',
                    Pool: userPool
    };

    var attributeList = [];

    var dataEmail = {
            Name: 'email',
            Value: 'mailme@mydomain.com'
    };

    var dataPhoneNumber = {
            Name: 'phone_number',
            Value: '+9112212212212'
    };

    var attributeEmail = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(dataEmail);
    var attributePhoneNumber = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(dataPhoneNumber);

    attributeList.push(attributeEmail);
    attributeList.push(attributePhoneNumber);

    var cognitoUser;

    userPool.signUp('userName','password',attributeList,null,function(err,result){
            if(err){
                    console.log(err);
                    alert(err);
                    return;
            }
            cognitoUser = result.user;
            console.log('User Name is: '+cognitoUser);
    });

};
Run Code Online (Sandbox Code Playgroud)

我收到错误,上面写着"在配置中丢失凭据",我知道我们在这里没有做任何AWSCognito.config.credentials分配,但是它不应该使用userPool对象中提供的信息吗?代码有什么问题吗?根据UserPoolId和客户端ID,两者都是100%正确的.任何帮助,将不胜感激.

Jee*_*eet 14

我明确地使用下面的代码解决了这个问题,根本没有必要在这个例子中提供IdentityPoolId,这些只是占位符,可以留下如下 -

AWS.config.region = 'us-east-1'; // Region
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
    IdentityPoolId: '...'
});

AWSCognito.config.region = 'us-east-1';
AWSCognito.config.credentials = new AWS.CognitoIdentityCredentials({
    IdentityPoolId: '...' 
});
Run Code Online (Sandbox Code Playgroud)

并且需要设置凭证AWS.config.credentials和AWSCognito.config.credentials.完成上述步骤后,AWSCognito.config需要更新如下 -

// Need to provide placeholder keys unless unauthorised user access is enabled for user pool
AWSCognito.config.update({accessKeyId: 'anything', secretAccessKey: 'anything'})

var poolData = { 
    UserPoolId : 'user pool id collected from user pool',
    ClientId : 'application client id of app subscribed to user pool'
};
Run Code Online (Sandbox Code Playgroud)

dataPhoneNumber和userData是可选的,如果需要短信验证,则应提供dataPhoneNumber.

一旦上述问题得到解决,问题就解决了,如果有人想看看,身份代码就是一个工作模式.

  • 这是一个不知疲倦的打击和试验努力这里是完整的代码,如果你想寻找参考 - https://github.com/jeetendra-choudhary/Identity-Code.git (3认同)