【发布时间】:2021-04-05 18:03:43
【问题描述】:
所以我的目标是让用户重新进行身份验证,然后能够更新他们的密码。所以现在我有一个警报控制器,当点击一个单元格时会显示它,并且在该警报中是 textFields 用于重新身份验证。
var reauthEmailTextField = UITextField()
var reauthPasswordTextField = UITextField()
let credential: AuthCredential = EmailAuthProvider.credential(withEmail: reauthEmailTextField.text ?? "", password: reauthPasswordTextField.text ?? "")
let reauthAlert = UIAlertController(title: "Reauthenticate", message: "In order for you to change your password, you must provide your sign-in credentials again.", preferredStyle: .alert)
let submit = UIAlertAction(title: "Submit", style: .default) { (sub) in
user.reauthenticate(with: credential) { (result, error) in
guard error == nil else {
print("The user couldn't be reauthenticated. Email: \(reauthEmailTextField.text ?? "") Password: \(reauthPasswordTextField.text ?? "")")
return
} ...
reauthAlert.addTextField { (reAuthEmail) in
reauthEmailTextField = reAuthEmail
reAuthEmail.placeholder = "Your Email"
reAuthEmail.clearButtonMode = .whileEditing
}
reauthAlert.addTextField { (reAuthPass) in
reauthPasswordTextField = reAuthPass
reAuthPass.clearButtonMode = .whileEditing
reAuthPass.placeholder = "Your Password"
reAuthPass.isSecureTextEntry = true
}
reauthAlert.addAction(UIAlertAction(title: "Dismiss", style: .cancel))
reauthAlert.addAction(submit)
present(reauthAlert, animated: true, completion: nil)
现在,当用户成功重新验证时,它将关闭当前警报并显示新警报以实际更新用户密码。问题是,重新认证过程总是失败并且永远不会出现第二个警报。 print 语句确实打印出textFields 中的输入,所以我知道这与textFields 无关。我正在阅读一些关于重新身份验证的帖子,并将我的代码与其他代码进行比较,我确信我的语法正确,所以我真的无法理解重新身份验证不起作用的问题。有什么建议吗?
【问题讨论】:
-
重新认证时的错误说明是什么?现在,你没有把它打印出来——你知道它在说什么吗?
-
说密码无效或者用户没有密码,问题是我每次都用同一个密码登录,不明白怎么会无效。 @jnpdx
标签: swift firebase google-cloud-firestore firebase-authentication uialertcontroller