J'ai un login avec le bouton facebook en utilisant angularfire (application Ionic) et j'utilise $ authWithOAuthRedirect pour rediriger vers la page d'authentification facebook puis de nouveau à l'application.Firebase (angulaire) facebook authWithRedirect ne fonctionne pas corriger
Cela fonctionne si j'ai une méthode $ onAuth à l'intérieur de la fonction qui appelle l'authentification de redirection facebook, mais si elle est en dehors de cette fonction, elle ne fonctionne pas. J'ai aussi un formulaire pour m'authentifier avec un email et un mot de passe et si $ onAuth est dans la méthode d'authentification de facebook, le login par email et mot de passe ne fonctionnera pas correctement.
est ici le contrôleur qui est l'utilisation du service Auth qui initialise la firebaseAuth.
/****
* Login Page Controller
* Uses angularfires OAuth for facebook login
****/
angular.module('starter')
//inject the Auth service from loginService.js
.controller('LoginController', ['$scope', '$state', 'Auth', function($scope, $state, Auth) {
//userlogin scope variables: error, authData
$scope.userLogin = {
error: null
};
//Login for email password
$scope.loginUser = function() {
Auth.$authWithPassword({
email: $scope.userLogin.email,
password: $scope.userLogin.password
})
.then(
function(authData){
$scope.userLogin.authData = authData;
},
function(error) {
if(error.code == 'INVALID_EMAIL') {
$scope.userLogin.error = "Invalid Email";
}
else if(error.code == 'INVALID_PASSWORD'){
$scope.userLogin.error = "Email or Password is incorrect";
} else {
$scope.userLogin.error = "Enter a valid email and password";
}
}
)
};
//login function for facebook login
$scope.loginUserFacebook = function() {
Auth.$authWithOAuthRedirect('facebook')
.then(function(authData) {
console.log('hi');
})
//if error due to no redirects
.catch(function(error) {
//authenticate with popup for emulators
if (error.code === 'TRANSPORT_UNAVAILABLE') {
Auth.$authWithOAuthPopup('facebook').then(function(authData) {
// console.log(authData);
});
} else {
console.log(error);
}
});
};
//After successful auth
Auth.$onAuth(function(authData) {
if (authData === null) {
console.log('Not logged in');
}
else {
$state.go('driver');
console.log('Logged in as ' + authData.uid);
}
//set authData on controller scope
$scope.userLogin.authData = authData;
});
}]);
Donc, si je propose que Auth onAuth $ vers le haut dans la fonction loginUserFacebook il fonctionne, mais bousille le LoginUser avec le courrier électronique et mot de passe.
Je suppose que la redirection facebook ne résout pas une promesse comme je le pensais, mais j'ai parcouru les documents Firebase de manière approfondie et ne peux pas comprendre cela.
N'hésitez pas à cingler à rob à firebase dot com si la réponse ci-dessous ne permet pas de clarifier/résoudre pour vous. –