Не подтвержденная электронная почта на устройстве (Firebase)

#ios #swift #firebase #firebase-authentication

#iOS #swift #firebase #firebase-аутентификация

Вопрос:

Я пытаюсь зарегистрировать пользователя и подтвердить его электронную почту. Я сделал это и подтвердил это по электронной почте, но на Auth.auth().CurrentUser.isemailверен

     if (Auth.auth().currentUser?.isEmailVerified)! {
        // present another vc
    } else {
        print("not verified yet") //Always prints that
    }
  

вот моя функция sendVerificationEmail:

 if let user = Auth.auth().currentUser {
            user.sendEmailVerification(completion: { (error) in
            if let error = error {
                debugPrint(error)
                return
            }
                print("Sent VerificationMail")
        })
    } else {
        print("no user logged in")
    }
  

здесь я регистрирую пользователя:

 func registrateUser(email: String, password: String, completion: @escaping (Bool) -> Void) {
    Auth.auth().createUser(withEmail: email, password: password) { (result, error) in
        if let error = error {
            debugPrint(error)
            completion(false)
            return
        }
        result?.user.sendEmailVerification(completion: { (error) in
            if let error = error {
                debugPrint(error)
                completion(false)
                return
            }
            completion(true)
        })
    }
}
  

Ответ №1:

Вам необходимо перезагрузить профиль пользователя, прежде чем проверять, подтверждена ли электронная почта.

Используйте следующий код:

 Auth.auth().currentUser?.reload(completion: { (error) in
    guard error == nil else {
        // handle error
        print(error!.localizedDescription)
        return
    }

    // your code below
    if (Auth.auth().currentUser?.isEmailVerified)! {
        // present another vc
    } else {
        print("not verified yet") //Always prints that
    }
})