该问题通常由于未正确设置SecretHash或未将其正确添加到请求头中而造成。以下是解决此问题的步骤:
在AWS控制台中打开Cognito用户池并找到您的应用程序客户端。
前往“应用程序设置”选项卡并找到“Secret Hash”。
生成新的Secret Hash,并使用以下代码将其添加到请求头中:
const AWS = require('aws-sdk');
AWS.config.update({ region: 'my-region' });
const cognitoISP = new AWS.CognitoIdentityServiceProvider();
const { REFRESH_TOKEN, USER_POOL_ID, CLIENT_ID } = process.env;
exports.handler = async (event) => {
const params = {
AuthFlow: 'REFRESH_TOKEN_AUTH',
ClientId: CLIENT_ID,
UserPoolId: USER_POOL_ID,
AuthParameters: {
REFRESH_TOKEN,
SECRET_HASH: 'ADD_YOUR_SECRET_HASH_HERE',
},
};
try {
const data = await cognitoISP.initiateAuth(params).promise();
console.log(data);
return { statusCode: 200, body: JSON.stringify(data) };
} catch (error) {
console.log(error);
return { statusCode: 500, body: error.stack };
}
};
在上面的代码示例中,“ADD_YOUR_SECRET_HASH_HERE”应替换为您的Secret Hash。
以上步骤应可纠正AWS Cognito RefreshToken API显示“SecretHash与客户端不匹配”的问题。