2017-02-13 1 views
1

У меня есть приложение AngularJS, которое я использовал с Firebase для сохранения данных.Аутентификация Firebase 3.0 с помощью приложения AngularJS

Теперь я работаю над рефакторингом моего кода аутентификации в Firebase 3.0.

Проблема, с которой я столкнулся, заключается в том, что при входе в систему статус объявления, указанный в файле app.js, не загружается. Консоль также не вызывает ошибок.

В моем приложении я хотел бы, чтобы мой пользователь был направлен на страницу входа в первую очередь. поэтому для этого у меня есть следующий код в файле app.js. Я не реорганизовал какой-либо код в этом файле. Пожалуйста, дайте мне знать, если это проблема.

angular 
.module('ngClassifieds', ['ngMaterial', 'ui.router', 'firebase']) 


.run(["$rootScope", "$state", function($rootScope, $state) { 
$rootScope.$on("$stateChangeError", function(event, toState, toParams, fromState, fromParams, error) { 
    // We can catch the error thrown when the $requireAuth promise is rejected 
    // and redirect the user back to the home page 
    if (error === "AUTH_REQUIRED") { 
    $state.go("auth"); 
    } 
}); 
}]) 

    .config(function($mdThemingProvider, $stateProvider, $urlRouterProvider) { 

    $mdThemingProvider 
     .theme('default') 
     .primaryPalette('blue-grey') 
     .accentPalette('orange') 
//  .backgroundPalette('blue-grey'); 


    $urlRouterProvider.otherwise('/auth'); 

    $stateProvider 
     .state('auth', { 
      url: '/auth', 
      templateUrl: 'components/auth/auth.tpl.html', 
      controller: 'authCtrl', 

     }) 


    $stateProvider 
     .state('classifieds', { 
      url: '/notes', 
      templateUrl: 'components/classifieds/classifieds.tpl.html', 
      controller: 'classifiedsCtrl', 
      resolve: { 
       // controller will not be loaded until $requireAuth resolves 
       // Auth refers to our $firebaseAuth wrapper in the example above 
       "currentAuth": ["auth", function(auth) { 
       // $requireAuth returns a promise so the resolve waits for it to complete 
       // If the promise is rejected, it will throw a $stateChangeError (see above) 
       return auth.ref.$requireAuth(); 
       }] 
      } 

     }) 

Ниже мой auth.ctr.js файл:

(function() { 

    "use strict"; 

    angular 
    .module('ngClassifieds') 
    .controller('authCtrl', function($scope, auth, $state, $firebaseAuth) { 

     var auth = $firebaseAuth(); 


    $scope.login = function() { 

     auth 
      .$signInWithEmailAndPassword($scope.email, $scope.password) 
      .then(function(result) { 
      $state.go('classifieds'); 
      }) 
      .catch(function(error) { 
      $scope.error = error; 
      }); 
     } 

    }); 

})(); 

Ниже мой auth.fac.js:

(function() { 

    "use strict"; 

    angular 
    .module('ngClassifieds') 
    .factory('auth', function($firebaseAuth) { 


     function signOut() { 
     return firebase.auth().signOut() 
      .then(function() { 
      console.log('signed out') 
      }) 
      .catch(function(error) { 
      console.log(error); 
      }); 
     } 

     return { 
     signOut: signOut 
     } 

    }); 

})(); 

Кроме того, мой index.html имеет необходимая информация для каждой документации по firebase 3.0:

<script src="https://www.gstatic.com/firebasejs/3.6.9/firebase.js"></script> 


<script> 
    // Initialize Firebase 
    var config = { 
    apiKey: "XXX", 
    authDomain: "XXX.firebaseapp.com", 
    databaseURL: "https://XXXX.firebaseio.com", 
    storageBucket: "XXX.appspot.com", 
    messagingSenderId: "XXX" 
    }; 
    firebase.initializeApp(config); 
</script> 

<script src="https://cdn.firebase.com/libs/angularfire/2.3.0/angularfire.min.js"></script> 

Буду признателен за любые рекомендации по этому вопросу.

Благодаря

+0

Пожалуйста, добавьте плункер или что-то подобное, что воспроизводит эту проблему. Это очень сложно отладить. –

+0

Возможный дубликат [Проблема с аутентификацией при миграции приложения AngularJS и Firebase 2.xx в Firebase 3.xx] (http://stackoverflow.com/questions/42137906/authentication-issue-with-migrating-angularjs-application-and-firebase -2-xx-to) –

ответ

0

Проблема в первом параметре "$ rootScope. $ На (...)" функции. Ну $ stateChangeError лишен. Фактически все события состояния, теперь устарели и отключены по умолчанию. См. Эту ссылку, которая может вам помочь: https://ui-router.github.io/ng1/docs/latest/modules/ng1_state_events.html. Также эта ссылка, вероятно, вы найдете здесь: https://ui-router.github.io/guide/ng1/migrate-to-1_0

+0

вы не сможете добавить в файл insex.html –