2014-01-21 25 views
0

我想使用Facebook JavaScript SDK(FB.login),AngularJS和Laravel在我的網站上驗證用戶。AngularJS與Facebook SDK - HTTP POST一旦登錄到Facebook

我在第二次Facebook登錄嘗試中工作,或者如果用戶已經登錄到Facebook,但在第一次登錄嘗試時,它不會生成任何http帖子。

在控制檯日誌中我收到響應,已連接,但沒有成功或錯誤,但它確實成功登錄到Facebook。

這裏是我迄今爲止...

 
app.run(function($rootScope, $location, AuthenticationService, FlashService, Facebook) { 
    var routesThatRequireAuth = ['/', '/add', '/settings']; 

    $rootScope.$on('$routeChangeStart', function(event, next, current) { 
     if(_(routesThatRequireAuth).contains($location.path()) && !AuthenticationService.isLoggedIn()) { 
      $location.path('/login'); 
      FlashService.show("Please log in to continue."); 
     } 
    }); 

    // Initialise Facebook 
    (function(d){ 
     var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
     if (d.getElementById(id)) { 
      return; 
     } 
     js = d.createElement('script');js.id = id;js.async = true; 
     js.src = "//connect.facebook.net/it_IT/all.js"; 
     ref.parentNode.insertBefore(js, ref); 
    }(document)); 
    window.fbAsyncInit = function() { 
     FB.init({ 
      appId  : 'myID', // App ID 
      status  : true, // check login status 
      cookie  : true // enable cookies to allow the server to access the session 
     }); 

     $rootScope.fbLogin = Facebook.fbLogin; 
    }; 
}); 
 
app.factory('Facebook', function ($http, $location) { 

    return { 
     fbLogin: function() { 
      FB.login(function(response) { 
       console.log('response received'); 
       if (response.status==='connected') { 
        console.log('connected'); 
        var postData = new Object(); 
        postData.network_id = 1; 

        $http({ 
         method: 'POST', 
         url: 'api/auth/login', 
         data: postData 
        }). 
        success(function(data, status, headers, config) { 
         console.log('success'); 
         $location.path('/networks'); 

        }). 
        error(function(data, status, headers, config) { 
         console.log('error'); 
        }); 

       } 
      }, 
      { scope:'email,read_friendlists,user_online_presence,read_stream,manage_pages'}); 
     } 
    } 

}); 

回答

1

沒有意識到我是在Facebook的範圍,增加$範圍$應用:

 

$rootScope.$apply(function() { 
    $http({ 
     method: 'POST', 
     url: 'api/auth/login', 
     data: postData 
    }). 
    success(function(data, status, headers, config) { 
     console.log('success'); 
     $location.path('/networks'); 

    }). 
    error(function(data, status, headers, config) { 
     console.log('error'); 
    }); 
    console.log('test'); 
});