как завершить аутентификацию при регистрации через firebase в случае прерывания сети - PullRequest
0 голосов
/ 09 июня 2018

Я использую FireBase в качестве своего бэкэнда.В моем проекте во время регистрации сначала сохраняется адрес электронной почты пользователя, а затем загружается фотография профиля.Но иногда, если возникают сетевые перебои после того, как firebase регистрирует электронную почту пользователя (и мое приложение возвращает ошибку), фотография профиля не загружается.Между тем, когда пользователь пытается зарегистрироваться, он говорит, что адрес электронной почты уже используется.

Я попытался Auth.auth().currentUser?.delete(completion: nil) после ошибки, чтобы очистить адрес электронной почты пользователя, чтобы пользователь мог зарегистрироваться снова, но это может быть неЛучшая практика, так есть ли другой способ.Также мы можем загрузить его, когда приложение восстановит связь?Код для контроллера вида регистрации:

 guard emailAddress.text != "" , password.text != "" , fullName.text != ""
        else {
            errorOutlet.isHidden = false
            errorOutlet.text = "one or more fields are empty."
            UIApplication.shared.endIgnoringInteractionEvents()
            return SVProgressHUD.dismiss()
        }

    if password.text != "" , emailAddress.text != "" , fullName.text != "" {
   Auth.auth().createUser(withEmail: emailAddress.text! , password: password.text!, completion: { (user, error) in

    if let error = error {
        print(error.localizedDescription)
        SVProgressHUD.dismiss()
        UIApplication.shared.endIgnoringInteractionEvents()

        if let errCode = AuthErrorCode(rawValue: error._code) {
            switch errCode {

            case .emailAlreadyInUse:
                self.errorOutlet.isHidden = false
                self.errorOutlet.text = "The email you entered is already in use"

            case .invalidEmail:
                self.errorOutlet.isHidden = false
                self.errorOutlet.text = "The Email you entered is invalid"

            case .internalError:
                self.errorOutlet.isHidden = false
                self.errorOutlet.text = "An internal error occured! Try again."

            case .networkError:
                self.errorOutlet.isHidden = false
                self.errorOutlet.text = "Check your internet connection."

            case .weakPassword :
                self.errorOutlet.isHidden = false
                self.errorOutlet.text = "Your password should contain more than 7 characters"

            default : break

            }
        }
    }



    // the auth returns a user
    if let user = user {

        let changeRequest = Auth.auth().currentUser!.createProfileChangeRequest()
        changeRequest.displayName = self.fullName.text!
        changeRequest.commitChanges(completion: nil)

        let imageRef = self.userStorage.child("\(user.uid).jpg")
        let data = UIImageJPEGRepresentation(self.profileImage.image!, 0.5)
        let uploadTask = imageRef.putData(data! , metadata: nil, completion: { (metadata, err) in
            if err != nil {
                print(err!.localizedDescription)

                //error


                Auth.auth().currentUser?.delete(completion: nil)
                self.errorOutlet.isHidden = false
                self.errorOutlet.text = "An error occured. Try again!"
                UIApplication.shared.endIgnoringInteractionEvents()
                SVProgressHUD.dismiss()

            }


            imageRef.downloadURL(completion: { (url , er) in
                // in case of error
                if er != nil{
                    print(er!.localizedDescription)
                    SVProgressHUD.dismiss()
                    Auth.auth().currentUser?.delete(completion: nil)
                    self.errorOutlet.isHidden = false
                    self.errorOutlet.text = "An error occured. Try again!"
                    UIApplication.shared.endIgnoringInteractionEvents()
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...