Я создаю угловое приложение + firebase с аутентификацией пользователя (с угловым огнем 0.8).
Мне нужно использовать обработчик событий onAuth() auth, так как я предоставлю несколько путей аутентификации, включенных в социальные сети и хочу избежать дублирования кода. Внутри обратного вызова onAuth мне нужно сбросить location.path на '/'.
Обычно все работает хорошо, но, если загружается приложение на уже авторизованной сессии (<F5>, к примеру), на $scope.$apply()
я получаю «Ошибка: [$ rootScope: inprog] $ применять уже в процессе "
(если я не использую $ scope. $ Apply(), путь местоположения не применяется к области видимости, и изменение страницы не происходит).
Я подозреваю, что я делаю некоторые глупые ошибки, но не может определить его ...
Это мой рабочий процесс:
app.controller('AuthCtrl', function ($scope, $rootScope, User) {
var ref = new Firebase(MY_FIREBASE_URL);
$scope.init = function() {
$scope.users = [];
User.all.$bindTo($scope, 'users').then(function() {
console.info('$scope.users bound:', $scope.users);
});
};
$scope.login = function() {
ref.authWithPassword({
email: $scope.user.email,
password: $scope.user.password,
}, function(err) {
if (err) {
console.error('Error during authentication:', err);
}
});
};
ref.onAuth(function(authData) {
if (authData) {
console.info('Login success');
var $rootScope.currentUser = $scope.users[authData.uid];
$location.path('/');
$scope.$apply();
} else {
console.info('Logout success');
}
});
};
app.factory('User', function ($firebase) {
var ref = $firebase(new Firebase(MY_FIREBASE_URL + 'users'));
return {
all: ref.$asObject()
};
});
Эй, Марко, я вижу, у вас была аналогичная проблема с моей. Не могли бы вы взглянуть на мой вопрос: http://stackoverflow.com/questions/31872935/firebase-authwithoauthredirect-doesnt-call-onauth-without-page-refresh – Nikola
Я сделал, но вы совсем другом (Ionic/Angular + Firebase) ... И, извините, я не использую Angular с нескольких месяцев (просто жду 2.0 ... :-), поэтому я действительно не могу вам помочь ...: - ( – MarcoS
Спасибо за ответ. Мне удалось решить эту проблему. – Nikola