AWS SDK Node.js Cognito自定义挑战报错:缺少必填参数ANSWER
问题分析与解决方案
问题核心是调用RespondToAuthChallenge接口时,ChallengeResponses中缺少必填的ANSWER参数。
Cognito的CUSTOM CHALLENGE流程里,当你通过InitiateAuth成功触发短信发送后,下一步调用RespondToAuthChallenge必须携带用户输入的短信验证码作为ANSWER,以此完成挑战验证。你之前的请求仅传入了USERNAME,没有提供这个关键参数,导致报错。
修改后的请求代码如下:
// userInputCode 为用户收到并输入的短信验证码 const input: Cognito.RespondToAuthChallengeCommandInput = { ClientId: process.env['Cognito_clientId'], ChallengeName: ChallengeNameType.CUSTOM_CHALLENGE, ChallengeResponses: { USERNAME: phoneNo, ANSWER: userInputCode // 新增:传入用户输入的验证码 }, Session: body.session };
补充说明:
ANSWER参数的值就是用户收到的短信验证码,需要从前端获取用户输入后传入该接口。- 这个参数是Cognito CUSTOM CHALLENGE流程中
RespondToAuthChallenge的必填项,用于验证用户是否通过了自定义挑战。
内容的提问来源于stack exchange,提问作者ron94
相关产品推荐
相关产品推荐

