Swift Firebase: как проверить, подтвержден ли пользователь после отправки электронного письма? - PullRequest
1 голос
/ 29 января 2020

После создания учетной записи я отправляю электронное письмо со ссылкой для подтверждения:

func sendVerificationMail() {
        if self.authUser != nil && !self.authUser!.isEmailVerified {
            self.authUser!.sendEmailVerification(completion: { (error) in

                // TODO Notify user email was sent or not because of error

            })
        } else {

            // TODO Notify everything is OK

        }
    }

И в другом месте я проверяю его, подтверждая:

override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

        if Auth.auth().currentUser != nil && Auth.auth().currentUser!.isEmailVerified {
            self.performSegue(withIdentifier: "toMainScreen", sender: self)
        } else {
            self.performSegue(withIdentifier: "notLoggedView", sender: self)
        }
    }

Даже если подтверждено, я всегда go в notLoggedView. Кто-нибудь может объяснить почему?

1 Ответ

2 голосов
/ 29 января 2020

Я столкнулся с подобной проблемой, и для ее решения мне нужно перезагрузить профиль. Попробуйте это.

func loginUser() {

       Auth.auth().currentUser?.reload(completion: { (error) in

                  if let error = error {
                            print(error)
                  } else {
                          if Auth.auth().currentUser != nil && Auth.auth().currentUser!.isEmailVerified {
                             self.performSegue(withIdentifier: "toMainScreen", sender: self)
                          } else {
                                  self.performSegue(withIdentifier: "notLoggedView", sender: self).  
                               }
                         }
                 })
}

Кроме того, вместо записи Auth.auth().currentUser каждый раз, когда вы можете сохранить это в variable. И вы можете использовать эту функцию где угодно.

if let authUser = Auth.auth().currentUser { //You can also get  current user like this in a safe way
  //Do your stuff here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...