0

Facebook、Twitter、Google &電子メールでログインできるように自分のアプリケーションをセットアップしました。しかし、私はそれが戻って、以下のエラーメッセージをもたらすように働くことができない後者の1つ。私app.jsでAngularとFirebaseで電子メールログインを修正するにはどうしたらいいですか?

angular.js:13550 TypeError: Cannot read property 'email' of undefined 
at Scope.$scope.loginEmail (main.js:34) 
at fn (eval at <anonymous> (angular.js:14432), <anonymous>:4:221) 
at expensiveCheckFn (angular.js:15485) 
at callback (angular.js:25018) 
at Scope.$eval (angular.js:17229) 
at Scope.$apply (angular.js:17329) 
at HTMLButtonElement.<anonymous> (angular.js:25023) 
at HTMLButtonElement.jQuery.event.dispatch (jquery.js:4737) 
at HTMLButtonElement.elemData.handle (jquery.js:4549) 

あなたは

theBigWeddingBook.factory('Auth', function ($firebaseAuth) { 
var ref = new Firebase("https://the-big-wedding-book.firebaseio.com/"); 
return $firebaseAuth(ref); 
}); 

を見ることができます。そして、私のmain.jsに私はすべてのログインを制御AuthCtrlをクリートしているように私はAUTHという名前の工場を作成しました。もう一度これを見ることができます。

heBigWeddingBook.controller('AuthCtrl', function($scope, Auth){ 
Auth.$onAuth(function(authData) { 
    $scope.authData = authData; 
    console.log(authData); 
}) 

$scope.loginFacebook = function() { 
    Auth.$authWithOAuthPopup("facebook").catch(function(error){ 
     console.error(error); 
    }) 
} 

$scope.loginTwitter = function() { 
    Auth.$authWithOAuthPopup("twitter").catch(function(error){ 
     console.error(error); 
    }) 
} 

$scope.loginGoogle = function() { 
    Auth.$authWithOAuthPopup("google").catch(function(error){ 
     console.error(error); 
    }) 
} 

$scope.loginEmail = function() { 
    Auth.$authWithPassword({ 
     email: $scope.user.email, 
     password: $scope.user.password 
    }).catch(function(error){ 
     console.error(error); 
    }) 
} 

$scope.logout = function() { 
    Auth.$unauth(); 
} 
}); 

私は何が間違っているのか分かりません。 Firebaseで設定した電子メールとパスワードでログインしようとしています。誰かが私を正しい方向に向けるかもしれませんか?

ありがとうございました

+0

はfirebaseに関連していないため、$ scope.userは未定義です。したがって、$ scope.userからの電子メールの読み取りは例外をスローします。 –

+0

どうすれば$ scope.userをユーザのメールとして定義するのですか? –

+0

あなたは '$ scope.user = {};'のようなことをすることができますが、あなたのビューを再確認する必要があります。あなたのフォームに ''あなたのコントローラコードを見てください –

答えて

0

私は最終的にこれを得ることができました。

<div class="container" ng-controller="MainCtrl"> 
<div class="row"> 
    <div class="col-md-12"> 
     <form class="form-signin" role="form"> 
      <div class="form-group"> 
       <input type="email" name="email" ng-model="user.email" class="form-control" placeholder="Email address" required="" autofocus=""> 
      </div> 
      <div class="form-group"> 
       <input type="password" name="password" ng-model="user.password" class="form-control" placeholder="Password" required=""> 
      </div> 
      <div class="form-group"> 
       <label class="checkbox"><a href="#/registration">Sign Up</a></label> 
      </div> 
      <div class="form-group"> 
       <button class="btn btn-lg btn-primary btn-block" type="button" ng-click="logIn()">Login</button> 
      </div> 
      <div class="row"> 
       <div class="col-md-4"> 
        <div class="form-group"> 
         <button class="btn btn-lg btn-primary btn-block" type="button" ng-click="loginFacebook()">Login with Facebook</button> 
        </div> 
       </div> 
       <div class="col-md-4"> 
        <div class="form-group"> 
         <button class="btn btn-lg btn-primary btn-block" type="button" ng-click="loginTwitter()">Login with Twitter</button> 
        </div> 
       </div> 
       <div class="col-md-4"> 
        <div class="form-group"> 
         <button class="btn btn-lg btn-primary btn-block" type="button" ng-click="loginGoogle()">Login with Google</button> 
        </div> 
       </div> 
      </div> 
      <div class="form-group"> 
       <button class="btn btn-lg btn-primary btn-block" type="button" ng-click="logOut()">Logout</button> 
      </div> 
     </form> 
    </div> 
</div> 
</div> 
を次のように私は上記の入力フォームを作った私はapp.jsファイルに関しては入っていたとハリーLIMは、前記のようにmain.jsに私は

'use strict'; 

var theBigWeddingBook = angular.module('theBigWeddingBook'); 

theBigWeddingBook.controller('MainCtrl', function ($scope, $firebaseAuth) { 
var ref = new Firebase("https://the-big-wedding-book.firebaseio.com"); 
var auth = $firebaseAuth(ref); 

ref.onAuth(function(user) { 
    if (user) { 
    console.log("Authenticated with uid:", user.uid); 
    } else { 
    console.log("Client unauthenticated.") 
    } 
}); 

$scope.user = {}; 

$scope.logIn = function() { 
    var username = $scope.user.email; 
    var password = $scope.user.password; 

    auth.$authWithPassword({ 
     email: username, 
     password: password 
    }).then(function(user) { 
     console.log(user); 
    }).catch(function(error) { 
     console.log(error); 
    }) 
} 

$scope.loginFacebook = function() { 
    auth.$authWithOAuthPopup('facebook').then(function(user) { 
     console.log(user); 
    }).catch(function(error) { 
     console.log(error); 
    }) 
} 

$scope.loginTwitter = function() { 
    auth.$authWithOAuthPopup('twitter').then(function(user) { 
     console.log(user); 
    }).catch(function(error) { 
     console.log(error); 
    }) 
} 

$scope.loginGoogle = function() { 
    auth.$authWithOAuthPopup('google').then(function(user) { 
     console.log(user); 
    }).catch(function(error) { 
     console.log(error); 
    }) 
} 

$scope.logOut = function() { 
    auth.$unauth(); 
} 

}); 

そして以下のコードを追加したすべてのコードを削除し

私はこれが将来誰かを助けることを願っています。

関連する問題