необработанное исключение 'InvalidPathValidation', причина: '(child :) Должна быть непустой строкой и не содержать'. ' '#' '$' '[' или ']' ' - PullRequest
0 голосов
/ 30 апреля 2018

Я делаю аутентификацию для своего приложения, но получаю сообщение об ошибке «invalidPathValidation», когда нажимаю кнопку регистрации.

Из моего исследования я думаю, что это что-то связанное с символами в электронном письме, которые не принимаются Firebase.

@IBAction func signUpButtonPressed(_ sender: Any) {
    guard emailAddress.text != "" , password.text != ""
        else {
            errorOutlet.isHidden = false
            return errorOutlet.text = "Email or Password field is empty."
    }

    if password.text != "" , emailAddress.text != "" {
        Auth.auth().createUser(withEmail: emailAddress.text! , password: password.text!, completion: { (user, error) in
            if let error = error {
                print(error.localizedDescription)
                self.errorOutlet.isHidden = false
                return self.errorOutlet.text = "couldn't create account"
            }

            if let user = user {
                let changeRequest = Auth.auth().currentUser!.createProfileChangeRequest()
                changeRequest.displayName = self.firstName.text!
                changeRequest.commitChanges(completion: nil)

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

                        // an err occured
                        self.errorOutlet.isHidden = false
                        return self.errorOutlet.text = "error"
                    }

                    imageRef.downloadURL(completion: { (url , er) in
                        if er != nil{
                            print(er!.localizedDescription)

                            // an error occured
                            self.errorOutlet.text = "error"
                            return  self.errorOutlet.isHidden = false

                        }

                        if let url = url {
                            let userInfo : [String : Any] = ["uid" : user.uid ,
                                                             "first Name" : self.firstName.text! ,
                                                             "last name" : self.surName.text! ,
                                                             "urlToImage" :url.absoluteString]

                            self.ref.child("users").child("user.uid").setValue(userInfo)

                            let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "subscribe")
                            self.present(vc, animated: true, completion: nil)
                        }
                    })
                })

                uploadTask.resume()
            }
        })
    }
}

1 Ответ

0 голосов
/ 30 апреля 2018

Кажется, эта строка проблематична:

self.ref.child("users").child("user.uid").setValue(userInfo)

Вы рассматриваете дочерний файл "user.uid" как строку (которая включает проблемный ".", Который не может использоваться в качестве ключа).

Вместо этого используйте userInfo.uid без "".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...