2017-04-01 10 views
0

ここに私のコードです。ログイン時にこのエラーが半永久的に発生しますが、ログインボタンが2回クリックされると毎回発生します。コールスタックサイズを超えた理由 - Firebase Auth

app.controller('login', ['$scope', '$state', '$rootScope', '$localStorage', '$location', 'userData', '$firebaseObject', 'firebase', '$timeout', function($scope, $state, $rootScope, $localStorage, $location, userData, $firebaseObject, firebase, $timeout) { 
    var _ = firebase.database().ref() 
    $scope.signin = function(user) { 
     firebase.auth().signInWithEmailAndPassword(user.email, user.password).then(function(user) { 
      $localStorage.currentUser = user 
      $localStorage.me = $firebaseObject(_.child('user/' + $localStorage.currentUser.uid))    
     }).catch(function(error) { 
      console.log(error) 
     }); 
    } 
}]); 

私はどこにもにリダイレクトいないよ、私はエラーをトリガすることができるものが表示されない、それがために、まだのように、このページ上にある必要があります。

enter image description here

私は、これは私の誤りであったかもしれないと思った:Error: Maximum call stack size exceeded on Angualr Ui Router State Changeが、私は右のそれを理解すれば、これはリダイレクトループが原因で、私は正しいFirebase認証セッションを開いて、任意のリダイレクトをやっていませんよ?

UPDATE:両方$localStorage行を削除した後、エラーは、私の実装や$localStorageとの問題が発生しませんか?

答えて

0

この問題の解決策を見つけたので、Firebase Authユーザーオブジェクト全体を$localStorageオブジェクトに書き込むときに問題が発生しているようです。 $localStorageの制限事項はわかりませんが、どこかに問題がありました。私の解決策は、必要なデータだけを解析して、それを$localStorageに保存することでした:

$scope.signin = function(user) { 
     firebase.auth().signInWithEmailAndPassword(user.email, user.password).then(function(user) { 
      serializeUser(user) 
     }).catch(function(error) { 
      swal('Oops', 'There was an error: ' + error.message, 'error') 
     }); 
    } 

    var serializeUser = function(user) { 
     var object = { 
      email: user.email, 
      uid: user.uid 
     } 
     $localStorage.currentUser = object 
    } 
関連する問題