如何获取 UNCONFIRMED 账户的 AWSCognitoIdentityUser 对象?

How do I get an UNCONFIRMED account's AWSCognitoIdentityUser object?

在 AWSCognitoIdentityProvider iOS Swift 库中,要通过 SMS 或电子邮件重新发送验证码,需要用户对象,这是通过调用用户池的 SignUp 方法检索的。成功调用 SignUp 方法后,将返回一个 AWSCognitoIdentityUser 类型的用户对象。要重新发送新的验证码,可以对该用户对象调用以下两种方法之一:

var pool: AWSCognitoIdentityUserPool?

override func viewDidLoad() {
    super.viewDidLoad()
    self.pool = AWSCognitoIdentityUserPool.init(forKey: 
    AWSCognitoUserPoolsSignInProviderKey)
}

...

AWSCognitoIdentityUser.getAttributeVerificationCode("email")  

// or

AWSCognitoIdentityUser.resendConfirmationCode()

但24小时后,如果在"CONFIRMED"状态下未使用验证码设置账号,则验证码默认失效,需要重新验证。如果用户关闭 iPhone 应用程序,我无法找到检索用户的 AWSCognitoIdentityUser 对象以便向他们重新发送另一个验证码的方法。用户无法登录以检索用户的对象,因为 UNCONFIRMED 帐户无法登录。尝试使用 SignUp 方法重新注册失败,因为该帐户已经存在。

如何获取 UNCONFIRMED 账户 AWSCognitoIdentityUser 对象以便重新发送新的验证码?

此问题自 2016 年 5 月 23 日以来一直未解决,并且似乎仍处于未解决状态。请参阅 github 上 aws/amazon-cognito-identity-js Issue #42 讨论的确切问题。

根据上面的问题讨论,解决方法可能是不在 Cognito 用户池中使用电子邮件别名,而是需要用户名以避免导致错误异常(未找到用户)的别名问题returned,因此没有信号表明该帐户存在并且处于未确认状态。我仍然不确定这是否会启用一种方法 return 用于重新发送新验证码的用户帐户的 AWSCognitoIdentityUser 对象,但我会尝试此解决方法并报告回来。

编辑:

发现您可以对特定用户帐户使用 getSession。没有记录它需要密码。您可以使用 "deadbeef" 作为密码,它仍然会获取该用户的对象。一旦检索到,即使用户未确认,也可以发送新的验证码。建议在调用注册之前执行此操作以检查用户是否存在,是否有权拉取用户,资源是否可用,用户是否未确认(如果是这种情况,我会自动发送另一个验证,因为我使用 e -邮件验证链接)等