所以我使用了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或其他身份提供商。
答案 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);
}
});