检查在使用 AWS Cognito 时是否正确配置了 client ID 和 secret。确保 secret 被正确设置并传递给 AWS Cognito。以下是一个可能出现此问题的代码示例:
const AWS = require('aws-sdk');
const cognito = new AWS.CognitoIdentityServiceProvider();
const params = {
UserPoolId: process.env.USER_POOL_ID,
ClientId: process.env.CLIENT_ID,
SecretHash: 'secret-hash'
};
cognito.adminInitiateAuth(params, (err, data) => {
if (err) {
console.error(err);
} else {
console.log(data);
}
});
要解决此问题,请检查以下内容:
const crypto = require('crypto');
const clientId = process.env.CLIENT_ID;
const clientSecret = process.env.CLIENT_SECRET;
const username = 'user@example.com';
const password = 'password';
const timestamp = new Date().getTime();
const secretKey = `${clientId}${username}${timestamp}${clientSecret}`;
const secretHash = crypto.createHmac('SHA256', clientSecret)
.update(secretKey)
.digest('base64');
在调用具有 client ID 和 secret 的 AWS Cognito API 时,包括 SecretHash:
const params = {
AuthFlow: 'ADMIN_NO_SRP_AUTH',
ClientId: process.env.CLIENT_ID,
UserPoolId: process.env.USER_POOL_ID,
AuthParameters: {
USERNAME: username,
PASSWORD: password,