2014-12-09 3 views
4

저는 Angular (1.3.5)와 Firebase를 사용하여 장난감 블로그 프로그램을 작성 중이며 현재 사용자 로그인 부분에 어려움을 겪고 있습니다. firebaseAuth with Angular : 사용자 로그인

나는 제 각도 모듈 작성 : 다음 blogApp 위에, I라는 컨트롤러를 생성
var blogApp = angular.module('blogApp', ['ngRoute', 'firebase', 'RegistrationController']); 

** RegistrationController **
blogApp.controller('RegistrationController', function ($scope, $firebaseAuth, $location) { 

     var ref = new Firebase('https://myAppName.firebaseio.com'); 
     // var authLogin = $firebaseAuth(ref); 


     $scope.login = function(){ 

      ref.authWithPassword({ 
       email: $scope.user.email, 
       password: $scope.user.password 
      }, function(err, authData) { 
       if (err) { 
        $scope.message = 'login error'; 
       } else { 
        $scope.message = 'login sucessful!'; 
       } 
      }); 
     }; // login 

    }); //RegistrationController 

난 ng-하는 login() 방법을 첨부 내 사용자 로그인 양식을 RegistratinController 범위 내에서 제출하십시오.

로그인 양식을 제출하려면 양식을 클릭해도 오류가 표시되지 않고 양식이 응답하지 않습니다.

로그인 양식은 '제출'버튼을 두 번 클릭해야만 작동합니다. 이유가 무엇입니까? 혼란스러운

+0

당신이이 문제를 해결하기 위해 관리나요? 나는 똑같은 문제를 겪고있다. 아래에 제공된 응답이 나를 위해 작동하지 않습니다 – solefald

+0

내 답변 된 작업이 나와 있으면 알려주세요. 그렇다면 허용 된 것으로 표시하십시오. 답이없는 대기열을 분명하게 유지하는 것이 좋습니다. –

답변

4

로그인 방법에 대해 Firebase JavaScript 라이브러리를 사용 중이며 AngularFire가 아닙니다.

$firebaseAuth 바인딩에 Firebase 참조를 전달해야합니다.

var auth = $firebaseAuth(ref); 

거기에서 auth.$authWithPassword를 호출 할 수 있습니다.

$scope.login = function(){ 

     auth.$authWithPassword({ 
      email: $scope.user.email, 
      password: $scope.user.password 
     }, function(err, authData) { 
      if (err) { 
       $scope.message = 'login error'; 
      } else { 
       $scope.message = 'login successful!'; 
      } 
     }); 
    }; // login 

AngularFire는 개체 및 배열에 대한 자동 동기화를 처리하는 Firebase 라이브러리의 각도 바인딩입니다. 또한 AngularFire는 $scope.apply을 호출하여보기를 올바르게 업데이트 할시기를 처리합니다.

귀하의 경우 로그인 코드가 첫 번째 클릭을 처리하지만 페이지에 적용되지 않습니다. $timeout에이 코드를 포함 할 수 있지만 $firebaseAuth 서비스를 사용하는 것이 좋습니다. 그는 여기에 게시 솔루션에 대한 사용자 jacobawenger

+0

이 작동하지 않습니다. 어쨌든 고맙습니다. – TonyGW

+0

어떤 오류가 발생합니까? 이것을 Plunker에서 재현 할 수 있습니까? 당신이 준 코드에서 대답은 정확합니다. –

+1

@TonyGW David의 대답은 정확합니다. Angular에 데이터가 업데이트되었는지 알려주고 컴파일을 시작해야합니다. 여전히 문제가 있거나 유사한 문제를 겪고있는 다른 사람들의 답변을 수락하면 새 코드로 질문을 업데이트하십시오. – Kato

1

감사 :

Can't get new password authentication methods to work in AngularFire 0.9.0?

이 예상대로 작동합니다

myApp.controller('RegistrationController', 
    function($scope, $firebaseAuth, $location) { 

    var ref = new Firebase('https://myApp.firebaseio.com'); 
    var simpleLogin = $firebaseAuth(ref); 

    $scope.login = function() { 
     simpleLogin.$authWithPassword({ 
      email: $scope.user.email, 
      password: $scope.user.password 
     }).then(function() { 
      $location.path('/mypage'); 
     }, function(err) { 
      $scope.message = err.toString(); 
     }); 
    } // login 

}); // RegistrationController