2014-09-26 17 views
3

我正在研究一個基於CRUD的應用程序。它是用PHP編寫的,並通過JSON API暴露出來。用php後端對AngularJS應用程序進行Facebook身份驗證

前端正在用AngularJS編寫,我正在進入需要整理認證的階段。我知道我希望它是基於令牌的,最好它應該能夠簡單地使用Facebook登錄。

因爲所有的數據等都在PHP後端,我認爲這是身份驗證應該發生的地方。我的想法是讓AngularJS前端請求PHP後端登錄,此時後端會關閉並使用Facebook登錄,將令牌保存在數據庫中,然後將其發送回AngularJS前端,以便它可以提供它隨後的請求。

我有點困惑的地方是讓AngularJS問後端進行身份驗證。處理這個問題的最好方法是什麼?我應該只在前端有一個鏈接來向後端發送http請求嗎?但是,如果我這樣做,用戶如何通過Facebook對話呈現登錄信息。

假設我的前端是http://front.myapp.com和後端是http://back.myapp.com,則認證喜歡的東西處理http://back.myapp.com/auth

我的問題是,我會寫在AngularJS側什麼樣的代碼得到它正確地交談後端,考慮到後端也必須關閉並與Facebook交談?真正的代碼示例將是最有幫助的。

回答

2

我建議你使用這個庫http://jberta93.github.io/ng-facebook-api/並在你的前端做Facebook認證。您可以輕鬆地檢索用戶數據,然後使用$ http.post您可以將這些數據提交到您的後端應用程序!然後,如果您需要與Facebook通過後臺進行交流,則可以使用前端身份驗證庫中返回的authResponse!通過這種方式在您的應用程序域中只指定前端網址。而你的用戶沒有看到後端應用程序!

一個小例子:

$scope.logAndRetriveFacebookUser = function(){ 
    facebook.getUser().then(function(r){ 
     var user = r.user; //User data returned; 
     var authResponse = r.authResponse; //Token auth, id etc.. 
     $http.post('/backend-login-url', {user:user,authResponse:authResponse}); 
    }, function(err){ 
     console.log("Ops, something went wrong..."); 
    }); 
} 
+0

問:你如何保證'$ http.post( '/後端爲登錄網址',該用戶使用:用戶,authResponse:authResponse});'還沒有被篡改了?什麼來阻止「黑客」用隨機authResponse鍵創建一個用戶對象並將其發送到你的'/ backend-login-url'? – RachelC 2016-01-25 02:00:26

+1

我在這裏找到了我的答案。 https://www.sammyk.me/best-practice-for-facebook-login-with-the-javascript-sdk-and-php-sdk-v4-1 – RachelC 2016-01-25 02:39:08

相關問題