我正在开发一个使用 AWS Cognito 进行用户身份验证的 Xamarin 应用程序。我正在尝试实现忘记密码,并且 MFA 设置为使用电子邮件确认码。
但是,当我尝试输入并使用带有新密码的确认码时,我总是收到
Invalid code provided, please request a code again.
ExpiredCodeException
我通过测试发现,我发送的任何内容或发送时都不会更改错误消息。如果我发送 1 个字符串(这显然不正确)或实际的确认码,我会收到相同的错误。如果我在收到电子邮件后立即尝试使用确认码或等待几分钟,我会收到相同的错误。
代码非常简单..
public async Task<bool> ConfirmResetPasswordCodeAsync(string username, string code, string password, BasePageModel pageModel)
{
try {
await client.ConfirmForgotPasswordAsync(new ConfirmForgotPasswordRequest { Username = username, ConfirmationCode = code, ClientId = ClientId, Password = password });
return true;
} catch(Exception ex) {
// handle the exception
}
return false;
}
所以我不确定我做错了什么。我是否缺少 AWS 管理员中的某个设置?
这不是 Xamarin 问题,而是用户池问题。
我们必须创建一个新的用户池,因为当我们尝试验证用户的电子邮件地址时遇到相同的错误。我们只需要询问电子邮件地址,但之前的用户池也需要用户名。
因此,重新创建用户池并从列表中选择您真正需要的内容。仅此而已。