I'm trying to use the new authentication methods in Angular Fire 0.9.0 but I must be doing something wrong.
I'm running 1.3.2 of Angular, 2.0.4 of Firebase and 0.9.0 of Angular Fire.
I call the login function from an ng-click
in my html.
Here is my js :
var app = angular.module("sampleApp", ["firebase"]);
app.controller('mainCtrl', function ($scope, $firebaseAuth) {
var ref = new Firebase('https://XXXX.xxx');
$scope.auth = $firebaseAuth(ref);
$scope.login = function() {
$scope.num = 'loggin in';
$scope.auth.$authWithPassword({
email: 'xxx@xxx.xxx',
password: 'yyyyy'
}, function(err, authData) {
if (err) {
console.log(err);
$scope.num = err;
} else {
console.log(authData);
}
});
};
I don't see anything in the console and I don't get any errors. So I can't figure out how to debug what I am doing wrong.
When I log $scope.auth
to the console, it shows the $authWithPassword
method. I just can't get it to work.
Any help would be appreciated.
The problem you are running into is that the AngularFire API is slightly different than the regular Firebase API for the authentication methods. While the Firebase SDK takes a callback as the second argument for authWithPassword(), the AngularFire API returns a promise for $authWithPassword(). The reason for the difference is that promises are a very common idiom in Angular and we wanted to provide an API that people are already familiar with. So, your code should look like this:
var app = angular.module("sampleApp", ["firebase"]);
app.controller('mainCtrl', function ($scope, $firebaseAuth) {
var ref = new Firebase('https://XXXX.xxx');
$scope.auth = $firebaseAuth(ref);
$scope.login = function() {
$scope.num = 'logging in';
$scope.auth.$authWithPassword({
email: 'xxx@xxx.xxx',
password: 'yyyyy'
}).then(function(authData) {
console.log(authData);
}).catch(function(error) {
console.log(err);
$scope.num = err;
});
};
});
来源:https://stackoverflow.com/questions/27084786/cant-get-new-password-authentication-methods-to-work-in-angularfire-0-9-0