2016-06-08 13 views
1

Also habe ich ein Problem mit dem Code aus irgendeinem Grund. Ich habe eine Swift-App und einen Registrierungs-Controller, der Benutzer mit E-Mails in Firebase als Backend registrieren soll (ich habe die App auf die neueste Firebase-Version aktualisiert). Ich habe einige Bruchstellen geschaffen, um zu sehen, wo es nicht mehr funktioniert und es stellt sich heraus, dass nach:Firebase registrieren mit Swift

FIRAuth.auth()?.createUserWithEmail(email!, password: password!, completion: { 
      user, error in 

es nicht die gesamte Prüfung auf Fehler oder Erfolgscode ausführen, bewegt er sich nur außerhalb des Geltungsbereichs der createUserWithEmail Methode. Die E-Mail und das Passwort haben Werte und ich sehe sie, aber es geht einfach weiter außerhalb des Bereichs der Methode. Ich habe Firebase als Modul importiert, es keine Warnung oder Fehler während der Aufbauzeit nicht werfen oder bei der Kompilierung

Ich weiß nicht, warum dies obwohl auftritt. Hier ist der Code für die SIGNUP Taste:

@IBAction func signUpTapped(sender: ButtonWhite) { 

    let email = emailTextField.text 
    let password = passwordTextField.text 
    let repeatPassword = repeatPasswordTextField.text 

    if email != "" && password != "" && repeatPassword != "" { 

     if password == repeatPassword { 

      FIRAuth.auth()?.createUserWithEmail(email!, password: password!, completion: { 
       user, error in 

       print(user) 
       // Error Case 
       if error != nil { 

        if let errorCode = FIRAuthErrorCode(rawValue: error!.code) { 
         switch errorCode { 
         case .ErrorCodeInvalidCredential: 
          showAlert(title: "Invalid Credentials!", msg: "Please, try again.", actionButton: "OK", viewController: self) 
         case .ErrorCodeNetworkError: 
          showAlert(title: "Network Error!", msg: "An error occurred while attempting to contact the authentication server. Try again", actionButton: "OK", viewController: self) 
         case .ErrorCodeOperationNotAllowed: 
          showAlert(title: "Bummer!", msg: "The administrator disabled sign in with the specified identity provider", actionButton: "OK", viewController: self) 
         case .ErrorCodeEmailAlreadyInUse: 
          showAlert(title: "Oops!", msg: "The email used to attempt a sign up already exists. Please, try again", actionButton: "OK", viewController: self) 
         case .ErrorCodeInvalidEmail: 
          showAlert(title: "Error", msg: "The email is invalid. Try again.", actionButton: "OK", viewController: self) 
         case .ErrorCodeTooManyRequests: 
          showAlert(title: "Error", msg: "Too many requests were made to a serve method", actionButton: "OK", viewController: self) 
         case .ErrrorCodeAccountExistsWithDifferentCredential: 
          showAlert(title: "Error", msg: "User account exists with different credentials than currently submitted. Try again.", actionButton: "OK", viewController: self) 

         default: 
          showAlert(title: "Ups!", msg: "An error occur. Please, try again.", actionButton: "OK", viewController: self) 
         } 
        } 

        SVProgressHUD.dismiss() 


       } else { 

       // Success Case 

        // Create Firebase User 
        let userData = ["provider" : "email", "password": password!] 
        DataService.ds.createFirebaseUser(user!.uid, user: userData) 
        print("firebase user created!") 
        self.loginUser() 
       } 
      }) 

     } else { 
      showAlert(title: "Password Mismatch", msg: "The passwords you've entered do not match. Please, try again", actionButton: "OK", viewController: self) 
     } 
+0

haben Sie 'FIRApp.configure()' 'in Ihrem AppDelegate laufen :: didFinishLaunchingWithOptions'? Außerdem geben Sie beim ersten Versuch nicht immer den Abschlussblock ein. Setzen Sie einen Haltepunkt innerhalb des Abschlussblocks und sehen Sie, ob Sie dort brechen. –

+0

Ja! Ich tat. Keine Fehler – Dani

+0

Versuchen Sie, diese Startoption hinzuzufügen: Produkt -> Schema -> Schema bearbeiten -> Ausführen (auf der linken Seite) -> Argumente beim Start übergeben. Klicken Sie auf die Plus-Schaltfläche und fügen Sie Folgendes hinzu: -FIRAnalyticsDebugEnabled –

Antwort

0

Solange kein Fehler vorhanden ist, FIRAuth.auth()?.createUserWithEmail sofort den Benutzer erstellen wird, gäbe es keine Notwendigkeit für

// Create Firebase User 
let userData = ["provider" : "email", "password": password!] 
DataService.ds.createFirebaseUser(user!.uid, user: userData) 
print("firebase user created!") 
self.loginUser() 

Ihre Feuerbasis Konsole überprüfen, um zu sehen, ob Benutzer erstellt wurden