首页 > 解决方案 > 如何获取凭据值以进行重新身份验证?(问题已更新)

问题描述

我正在尝试允许用户更改他们的电子邮件或密码。我对重新身份验证的工作方式进行了一些研究,但是在创建credential如何在该.credentialWithEmail(email, password: password)部分中获取用户电子邮件/密码时,我回答了大多数问题。我不确定在这些字段中输入什么。

当我查看快速帮助选项卡时,它解释了参数:

电子邮件 用户的电子邮件地址。密码 用户的密码。

这是代码


   let credential = FIREmailPasswordAuthProvider.credentialWithEmail(email, password: password)

  func updateEmail() {



        guard let updatedEmail = self.updatedEmail else { return }

        let user = Auth.auth().currentUser
        guard let currentUid = Auth.auth().currentUser?.uid else { return }
        // re authenticate the user
        user?.reauthenticate(with: credential, completion: { (result, error) in
            if let error = error {
                // An error happened.
                print(error._code)
                self.handleError(error)
            } else {
                guard self.emailChanged == true else { return }

                user?.updateEmail(to: self.emailTextField.text!, completion: { (error) in
                                        if let error = error {
                                            self.handleError(error)
                                        } else {
                                            print("Email Change Success")
                                            USER_REF.child(currentUid).child("email").setValue(updatedEmail) { (err, ref) in

                                                 self.dismiss(animated: true, completion: nil)

            }
        }

    }

        )}



    }
    )}

标签: swiftfirebasefirebase-authentication

解决方案


如果您问为什么设置后无法获取电子邮件或密码FIREmailPasswordAuthProvider,那是因为它只是设置了。设置后没有找回邮箱/密码的功能FIREmailPasswordAuthProvider。Firebase 没有办法从他们的Auth班级中检索设置的密码。可以使用以下方式检索用户电子邮件let userEmail = Auth.auth().currentUser?.email

您可能需要重新设计您的代码,以允许应用在本地保存密码,NSUserDefaults或者只是让用户重新输入密码。


推荐阅读