2016-03-12 4 views
1

Voici mon bouton d'édition pour une application iOS avec swift et Firebase.Modification de l'adresse e-mail et du mot de passe de l'utilisateur avec Swift et Firebase

var ref = Firebase(url:"https://·············.firebaseio.com") 

    @IBAction func Done(sender: AnyObject) { 

    ref.changeEmailForUser("users/\(self.ref.authData.uid)/email", 
     password: "users/\(self.ref.authData.uid)/provider", toNewEmail: EmailTextField.text) 
     { (ErrorType) -> Void in 
     if ErrorType != nil { 
      print("There was an error processing the request") 
     } else { 
      print("Email changed successfully") 
     } 
    } 

    ref.changePasswordForUser("users/\(self.ref.authData.uid)/email", 
     fromOld: "users/\(self.ref.authData.uid)/provider", toNew: PasswordTextField.text) 
     { (ErrorType) -> Void in 

     if ErrorType != nil { 
      print("There was an error processing the request") 
     } else { 
      print("Password changed successfully") 
     } 

    } 

ref.childByAppendingPath("users").childByAppendingPath(self.ref.authData.uid).updateChildValues(["name":self.NameTextField.text!,"about":self.TextView.text!,"Picker":self.PickerVar]) 




} 

Lorsque l'utilisateur clique sur le bouton fait que je veux mettre à jour toutes ses informations dans le firebase. E-mail, mot de passe, nom, etc.

Toutes les informations mises à jour lorsque je clique sur le bouton Terminé, sauf pour l'e-mail et le mot de passe! Il est dit qu'il y avait une erreur de traitement de la demande: as the picture here

Je ne sais pas où est l'erreur! Ai-je utilisé les fonctions changeEmailForUser et changePasswordForUser de manière incorrecte?

est ici l'arbre JSON:

{ 
"users" : { 
    "7b595e99-b20d-4961-bcf0-6c46956a0cbe" : { 
     "Picker" : "Student", 
     "about" : "Hey, I'm Here", 
     "email" : "[email protected]", 
     "name" : "Mariah Khayat", 
     "provider" : "password" 
    }, 
    "7eb23db6-6b56-4225-9306-22ed0b935b52" : { 
     "Picker" : "Teacher", 
     "about" : "Hi", 
     "email" : "[email protected]", 
     "name" : "Memo", 
     "provider" : "password" 
    } 
    } 
    } 
+1

Possible copie de [Modifier les informations dans Firebase, projet swift] (http://stackoverflow.com/questions/35887692/edit-information-in-firebase-swift -project) – Jay

Répondre

3

Accarding API Firebase faire une certaine confusion. après avoir vu l'API https://www.firebase.com/docs/ios/api/#firebase_changeEmailForUserpasswordtoNewEmailwithCompletionBlock Il est dit clairement:

enter image description here

Donc, pour la mise à jour Email Pour les utilisateurs de ce fait pas partie d'un profil de mise à jour. Ainsi, selon la suite, vous pouvez modifier votre adresse e-mail:

ref.changeEmailForUser("OldEmailthatYouuserForLogin", password: "correctpassword", 
      toNewEmail: "newEmail", withCompletionBlock: { error in 
       if error != nil { 

        print("There was an error processing the request") 
        // There was an error processing the request 
       } else { 

        print("Email changed successfully") 

        // Email changed successfully 
       } 
     }) 

// Dont use edited email for the old email and edited password for the password make sure you are using your actually email and password 
+0

J'ai essayé de faire ce que vous avez fait.Tout est mis à jour, sauf pour l'email et le mot de passe, il donne toujours "il y avait une erreur de traitement de la demande"! – Mariah

+0

Voir sur la photo: http://screenshot.net/ yx4qei8 – Mariah

+0

vous devez enregistrer le mot de passe en tant que fichier individuel. ual déposé comme passwrod et définir le mot de passe lors de l'inscription et utiliser ce champ. –

0

Mariah,

Le problème est votre saisi les détails e-mail et mot de passe. Vous montrez le chemin pour votre email et votre mot de passe, mais vous devriez entrer ce qui les appelle comme. au lieu de "" users/(self.ref.authData.uid)/email "vous devez le fournir comme ref.authData.providerData [" email "] comme? NSString as? String

pour le mot de passe dont vous avez besoin de modifier vos règles Firebase afin que l'utilisateur puisse avoir accès à son propre mot de passe