我正在使用AWS javascript sdk将用户池与我正在构建的Web应用程序集成。用户池已设置完毕,我已按照此处的用法示例进行操作:https://github.com/aws/amazon-cognito-identity-js
我不断收到错误消息: " NotAuthorizedException:无法验证客户端的秘密哈希值(我的应用客户端ID)"
AWS.config.region = 'us-east-1'; // Region
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: '...' // my identity pool id here
});
AWSCognito.config.region = 'us-east-1';
AWSCognito.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: '...' // my identity pool id here
})
var poolData = {
UserPoolId: '...', // my user pool id here
ClientId: '...' // client id here
};
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
var userData = {
Username : 'username',
Pool : userPool
};
var attributeList = [];
var dataEmail = {
Name : 'email',
Value : 'email@mydomain.com'
};
var dataPhoneNumber = {
Name : 'phone_number',
Value : '+15555555555'
};
var attributeEmail = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(dataEmail);
var attributePhoneNumber = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(dataPhoneNumber);
attributeList.push(attributeEmail);
attributeList.push(attributePhoneNumber);
userPool.signUp('username', 'password', attributeList, null, function(err, result){
if (err) {
alert(err);
return;
}
cognitoUser = result.user;
console.log('user name is ' + cognitoUser.getUsername());
});
上面的代码段有任何建议或潜在问题吗?谢谢!
答案 0 :(得分:7)
对此的解决方案实际上非常简单。您必须删除aws中的应用程序并在没有密钥的情况下重新添加它,以便它可以进行授权。
答案 1 :(得分:2)
使用Javascript SDK创建Web应用程序时,您无法使用密钥,因为无法存储它。这将导致您看到的异常。
正如您所发现的,创建没有密钥的应用程序可以解决问题。
答案 2 :(得分:0)
对于JavaScript SDK,Cognito仍然不支持" Client Secret"。在创建App Client时,请务必取消选中" Generate Secret"键。 这与我在Java SDK中面临的问题相同。
但这是AWS Cognito团队的一个问题?我们将如何使用生产环境首选的客户端密钥。
如果有人遇到类似问题,请立即删除您的客户端应用并重新创建客户端应用,而不会产生客户端密钥。我们仍然希望专家开发人员回答,我们将如何使用客户端秘密?
答案 3 :(得分:0)
就我而言,我在UserPoolId
上输入了错误的内容。因此,请再次检查您的凭据。