У меня есть логин с кнопкой facebook с помощью angularfire (Ionic app), и я использую $ authWithOAuthRedirect для перенаправления на страницу аутентификации facebook, а затем обратно в приложение.Firebase (угловой) facebook authWithRedirect не работает исправление
Он работает, если у меня есть метод $ onAuth внутри функции, которая вызывает аутентификацию переадресации facebook, но если она находится вне этой функции, она не работает. У меня также есть форма для аутентификации с помощью электронной почты и пароля, и если $ onAuth находится в методе проверки подлинности facebook, тогда логин электронной почты и пароля будет работать неправильно.
Вот контроллер, который использует службу идентификации, которая инициализирует 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;
});
}]);
Так что, если я двигаюсь, что Auth $ onAuth вверх в функцию loginUserFacebook то она работает, но портит loginUser с электронной почтой и пароль.
Я предполагаю, что перенаправление facebook не разрешает обещание, как я думал, но я прошел обширную документацию Firebase и не могу понять это.
Не стесняйтесь пинговать меня при грабете в firebase dot com, если ниже ответ не получит этого уточненного/разрешенного для вас. –