在AWSCognitoIdentityProvider iOS Swift库中,要通过短信或电子邮件重新发送验证码,需要一个用户对象,这是通过调用用户池的SignUp方法检索的。成功调用SignUp方法后,将返回AWSCognitoIdentityUser类型的用户对象。要重新发送新的验证码,可以在该用户对象上调用以下两种方法之一:
public static char[] initializeDisplay(char[] wordToGuess) {
/* No need to store the length
int len=wordToGuess.length;
System.out.print(len);
char[] charArray ={ '-' }; */
// Pre-define the length at initialization
char[] charArray = new char[wordToGuess.length];
// Fills the array with the char '-'
Arrays.fill(charArray, '-');
return charArray;
}
但是,24小时后,如果验证码未用于在" CONFIRMED"中设置帐户?状态,验证码默认过期,验证时需要新的验证码。如果用户关闭iPhone应用程序,我无法找到检索用户的AWSCognitoIdentityUser对象,以便向其重新发送另一个验证码。用户无法登录以检索用户的对象,因为UNCONFIRMED帐户无法登录。尝试使用SignUp方法重新登录失败,因为该帐户已存在。
如何获取UNCONFIRMED帐户AWSCognitoIdentityUser对象以重新发送新的验证码?
答案 0 :(得分:0)
此问题自2016年5月23日开始,似乎仍处于开放状态。请参阅github上aws/amazon-cognito-identity-js Issue #42讨论的确切问题。
根据上面的问题讨论,解决方法可能不是在Cognito用户池中使用电子邮件别名,而是需要用户名以避免别名问题导致错误的异常(未找到用户)以及因此,没有信号表明该帐户存在且处于UNCONFIRMED状态。我仍然不确定这是否会启用方法来返回用户帐户的AWSCognitoIdentityUser对象,该对象用于重新发送新的验证码,但我会尝试此解决方法并报告回来。
编辑:
发现您可以将getSession用于特定用户帐户。它没有记录,它需要一个密码。你可以使用" deadbeef"作为密码,它仍然获得该用户的对象。一旦检索到,即使用户未经证实,也可以发送新的验证码。如果用户未经证实,请在调用注册前检查用户是否存在,是否有权提取用户,资源是否可用(如果是这种情况,我会自动发送另一个验证)因为我使用电子邮件验证链接等等。