Swift 发送电子邮件以验证帐户,然后更新到新电子邮件

Swift 发送电子邮件以验证帐户,然后更新到新电子邮件,swift,firebase,email,firebase-authentication,Swift,Firebase,Email,Firebase Authentication,我使用Firebase作为身份验证和存储数据的后端服务。 在我们的应用程序中,我们需要让用户能够更改电子邮件。 当用户创建帐户时,我们使用Firebase方法向他发送验证电子邮件 Auth.auth().createUser(withEmail: user.email, password: password) { (_, error) in if error != nil { // Error handling Utilities.HUDstopLoa

我使用Firebase作为身份验证和存储数据的后端服务。 在我们的应用程序中,我们需要让用户能够更改电子邮件。 当用户创建帐户时,我们使用Firebase方法向他发送验证电子邮件

 Auth.auth().createUser(withEmail: user.email, password: password) { (_, error) in
       if error != nil {
       // Error handling
       Utilities.HUDstopLoading()
        Utilities.alertWhileCreateingNewAccount(self.viewController, errorMessage: error?.localizedDescription ?? "Something wrong happend")
       } else {
       // Account created
       }
这没什么问题

当用户想要更改电子邮件时,会出现问题 因为在更新电子邮件时,它会在Firebase身份验证中自动更新。 现在,当用户在电子邮件中输入错误时,验证电子邮件将发送到错误的地址,但尽管此电子邮件在Firebase身份验证中更新

我正在使用此功能更新电子邮件:

      currentUser.updateEmail(to: newEmail) { (error) in
          if let error = error 
          // Error happend while updating email
          print("Error happend while updating email \(error)")
         Utilities.alertWhileCreateingNewAccount(self.viewController, errorMessage: error.localizedDescription )} 
   else {                        
        self.sendEmailVerification()
        currentUser.reload(completion: nil)                        
        Utilities.successHUD(in: self.viewController.view)
         self.viewController.navigationController?.popViewController(animated: true)
            }

          }
对于Android,有一个方法叫做

verifyBeforeUpdateEmail(String newEmail)
而且它工作得很好。它将用户验证发送到新电子邮件,并等待用户验证一封电子邮件(如果不是,则前一封电子邮件仍保留)。 在iOS的文档中,我发现了相同的函数,但是。。。它不存在于FirebaseAuth

有没有办法通过更新iOS应用程序的电子邮件来解决此问题?如果Firebase允许更新电子邮件而不验证

Firebase在这里“如果Firebase允许在不验证的情况下更新电子邮件,那将非常奇怪……”这正是它所做的,尽管我同意这对您的使用并不理想。目前,您必须自己实现备用流。“如果Firebase允许在没有验证的情况下更新电子邮件,那将是非常奇怪的……”这正是它所做的,尽管我同意这对您的使用并不理想。目前,您必须自己实现备用流。但这可能是好的。