放大和反应:代码不匹配和失败启用软件令牌 MFA

Amplify and React : Code mismatch and fail enable Software Token MFA

我有一个 Cognito 用户池,其 MFA 设置为可选且仅包含 TOTP。

我正在尝试设置一个页面,以便首次为用户启用 MultiFactorAuthentication AWS Documentation

安装我的组件时,我生成一个二维码并使用 qrcode.react

在屏幕上显示它
  useEffect(() => {
Auth.currentAuthenticatedUser({ bypassCache: true }).then(user => {
  setUser(user);
  Auth.setupTOTP(user).then(code => {
    const authCode = "otpauth://totp/AWSCognito:" + user.username + "?secret=" + code + "&issuer=Invent";
    setQrCode(authCode);
  });
});
}, []);

然后,当用户输入时,我验证它并调用 setPrefferredMFA。现在在这里,我检查了“输入”是否正确传递并且那里没有问题。

const setupMFA = input => {
Auth.setupTOTP(user).then(() => {
  Auth.verifyTotpToken(user, input)
    .then(() => {
      Auth.setPreferredMFA(user, "TOTP").then(() => {
        props.setShowModal(false);
      });
    })
    .catch(e => {
      // Token is not verified
    });
});
};

我仍然收到 代码不匹配并无法启用软件令牌 MFA 错误并且无法为用户设置 MFA。

我解决了

Auth.verifyTotpToken() 不应该在 setupTOTP 的 .then() 块中。

噗。删除 setupMFA 函数中的 Auth.setupTOTP 使其工作。