我被困在“Amazon Cognito Identity用户池”流程中。
我尝试了所有可能的代码来验证用户在认知用户池中的身份。但是我总是得到错误说“错误:无法验证客户端4b*******fd的秘密哈希”。
这是代码:
AWS.config.region = 'us-east-1'; // Region
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'us-east-1:b64bb629-ec73-4569-91eb-0d950f854f4f'
});
AWSCognito.config.region = 'us-east-1';
AWSCognito.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'us-east-1:b6b629-er73-9969-91eb-0dfffff445d'
});
AWSCognito.config.update({accessKeyId: 'AKIAJNYLRONAKTKBXGMWA', secretAccessKey: 'PITHVAS5/UBADLU/dHITesd7ilsBCm'})
var poolData = {
UserPoolId : 'us-east-1_l2arPB10',
ClientId : '4bmsrr65ah3oas5d4sd54st11k'
};
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
var userData = {
Username : 'ronakpatel@gmail.com',
Pool : userPool
};
var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);
cognitoUser.confirmRegistration('123456', true,function(err, result) {
if (err) {
alert(err);
return;
}
console.log('call result: ' + result);
});
目前AWSCognito似乎不能完美地处理客户端机密。它将在不久的将来工作,但目前它仍然是一个beta版本。
对我来说,它适用于没有客户端机密的应用程序,但适用于具有客户端机密的应用程序。
因此,在您的用户池中尝试创建一个新应用程序而不生成客户端机密。然后使用该应用程序注册新用户或确认注册。
根据文档:http://docs.aws.amazon.com/cognito/latest/developerguide/setting-up-the-javascript-sdk.html
JavascriptSDK不支持带有客户端机密的应用程序。
说明现在指出,您需要在为用户池创建应用程序时取消选中“生成客户端密钥”。
这可能晚了几年,但只需取消选中“生成客户端机密”选项,它就可以为您的Web客户端工作。