1

Ich habe schon Posts zu diesem Problem gesehen, aber sie sind entweder veraltet oder bieten eine Lösung, die meinem Setup sehr ähnlich ist.

Grundsätzlich habe ich zwei Funktionen in meinem Controller: authCtrl.login und authCtrl.register. Der Aufruf des Registers an Auth. $ createUserWithEmailAndPassword() funktioniert einwandfrei, aber der Aufruf der Anmeldung an Auth. $ AuthWithPassword() führt nicht dazu, da ich einen Fehler "... ist keine Funktion" bekomme. Kann nicht für das Leben von mir herausfinden, was hier falsch ist.

Hier ist mein Setup:

auth.service.js:

angular.module('angularfireSlackApp') 
.factory('Auth', function($firebaseAuth, $firebaseObject){ 
var auth = $firebaseAuth(); 

return auth; 
}); 

auth.controller.js:

angular.module('angularfireSlackApp') 
.controller('AuthCtrl', function(Auth, $state){ 
var authCtrl = this; 

authCtrl.user = { 
    email: '', 
    password: '' 
}; 

authCtrl.login = function() { 
// Why is this not a function 
Auth.$authWithPassword(authCtrl.user) 
.then(function (auth){ 
    $state.go('home'); 
}, function (error){ 
    authCtrl.error = error; 
}); 
} 

authCtrl.register = function() { 
Auth.$createUserWithEmailAndPassword(authCtrl.user.email, authCtrl.user.password) 
.then(function (user){ 
    authCtrl.login(); 
}, function (error){ 
    authCtrl.error = error; 
}); 
} 

}); 

Antwort

2
+0

Mein Mann! Es ist interessant, weil das ist, was ich in den Quellcode für die neueste Version von AngularFire in Bezug auf die createUserWithEmailAndPassword gefunden: „* Erstellt eine neue E-Mail/Passwort Benutzer Beachten Sie, dass diese Funktion nur den Benutzer erstellt, wenn Sie . * Melden Sie sich als neu erstellter Benutzer an und rufen Sie $ authWithPassword() auf, nachdem das Versprechen für * diese Methode aufgelöst wurde. " Ich dachte, ich würde nur diese Logik in seiner eigenen Funktion verwenden und dann die Login-Funktion aus dem Register aufrufen. Wie auch immer, funktioniert jetzt großartig. Danke vielmals. –

0

Vielleicht eine vollständigere Antwort Gebäude auf, was Aaron Saunders antwortete AngularJS und angularfire mit:

var auth = $firebaseAuth(); 

$scope.loginUser = function (email, password) { 
     auth.$signInWithEmailAndPassword(email, password).then(function(firebaseUser) { 
      console.log("User Logged in successfully with uid: " + firebaseUser.uid); 
     }).catch(function(error) { 
      console.log("An Authentication error occurred: " + error); 
     }); 
    }; 
Verwandte Themen