AWS Cognito无法进行身份验证:空白答案 - JS SDK

时间:2016-08-02 07:29:37

标签: javascript amazon-web-services cloud aws-sdk amazon-cognito

所以我使用了AWS JS SDK官方仓库中的这一段代码。 它用于验证用户。

它返回一个空白回复。

AWSCognito.config.region = 'us-east-1';
var authenticationData = {
    Username : '+1112223333', //some phone number used as an Alias
    Password : 'password123456',
};
var authenticationDetails = new AWSCognito.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData);
var poolData = {
    UserPoolId : 'us-east-1_P00l1d', // Your user pool id here
    ClientId : 'xxx' // Your client id here
};
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
var userData = {
    Username : 'myusername',
    Pool : userPool
};
var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);
cognitoUser.authenticateUser(authenticationDetails, {
    onSuccess: function (result) {
        console.log('access token + ' + result.getAccessToken().getJwtToken());
        AWS.config.credentials = new AWS.CognitoIdentityCredentials({
            IdentityPoolId : 'xxx', // your identity pool id here
            Logins : {
                // Change the key below according to the specific region your user pool is in.
                'cognito-idp.pool_id_number_here_xxx' : result.getIdToken().getJwtToken()
            }
        });
    },

    onFailure: function(err) {
        alert(err)
        console.log("Error " + err);
    },

});

因此,对于authenticationData,我使用电话号码作为用户名(电话号码设置为别名)和密码。我也直接尝试使用用户名。 UserPoolId和ClientId是正确的,因为我使用相同的值来注册和确认电话号码。 在userData中,我使用正确的myusername设置Username。

关于身份池,我在AWS控制台上创建了一个链接到我的应用程序和我的UserPool的身份池,并在authenticateUser中替换了IdentityPoolId和Logins的值。 我不完全确定Logins的价值。我使用了cognito-idp.POOLIDNUMBER。

AWS的输出为空白。 我想我甚至无法访问服务器,我怀疑角色或身份池存在问题(我认为userPool很好)。

我的身份池仅使用AWS Cognito用户,而不是Facebook或其他身份提供商。

2 个答案:

答案 0 :(得分:0)

使用--with-all重新编译SJCL解决了这个问题。

答案 1 :(得分:0)

请确保您拥有适用于JavaScript的Amazon Cognito Identity SDK所需的所有库。以下是这些库的列表和链接。

1.适用于JavaScript的Amazon Cognito AWS SDK - https://raw.githubusercontent.com/aws/amazon-cognito-identity-js/master/dist/aws-cognito-sdk.min.js

2.适用于JavaScript的Amazon Cognito Identity SDK - https://raw.githubusercontent.com/aws/amazon-cognito-identity-js/master/dist/amazon-cognito-identity.min.js

3.JavaScript BN库(jsbn.js,jsbn2.js) - http://www-cs-students.stanford.edu/~tjw/jsbn/

4.Stanford JavaScript加密库 - https://github.com/bitwiseshiftleft/sjcl

5.AWS SDK for JavaScript(可选,使用其他aws服务) - http://aws.amazon.com/sdk-for-browser/

包含所有这些库,然后使用下面的代码段。

AWSCognito.config.region = 'YOUR_REGION';
var poolData = { 
    UserPoolId : 'YOUR_USER_POOL_ID', // Your user pool id here
    ClientId : 'YOUR_CLIENT_ID' // Your client id here
};
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
var userData = {
    Username : "userName", // your username here
    Pool : userPool
};
//Signing Users in the App
var authenticationData = {
    Username : "userName", // your username here
    Password : "password" // your password here
};

var authenticationDetails = new AWSCognito.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData);

var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);

cognitoUser.authenticateUser(authenticationDetails, {
    onSuccess: function (result) {
        console.log('access token + ' + result.getAccessToken().getJwtToken());
    },
    onFailure: function(err) {
        console.log(err);
    }
});