使用php后端在AngularJS应用程序上进行Facebook身份验证


Facebook authentication on AngularJS app with php backend

我正在开发一个主要基于CRUD的应用程序。它是用PHP编写的,并通过JSON API公开自己。

前端是用AngularJS编写的,我已经到了需要进行身份验证的阶段。我知道我希望它是基于令牌的,最好它应该能够简单地登录Facebook。

由于所有的数据等都在PHP后端,我认为这就是应该进行身份验证的地方。我的想法是让AngularJS前端请求PHP后端登录,这时后端会关闭并登录facebook,将令牌保存在数据库中,并将其发送回AngularJS前台,以便它可以为其提供后续请求。

我有点卡住的地方是让AngularJS请求后端进行身份验证。最好的处理方法是什么?我应该在前端有一个链接,向后端发出http请求吗?但如果我这样做,用户怎么会在登录时看到脸书对话。

假设我的前端是http://front.myapp.com后端是http://back.myapp.com然后身份验证在类似http://back.myapp.com/auth

我的问题是,考虑到后端也必须关闭并与facebook对话,我会在AngularJS端写什么样的代码来让它与后端正确对话?真实的代码示例将是最有用的。

我建议您使用这个库http://jberta93.github.io/ng-facebook-api/并在你的前端进行Facebook认证。您可以轻松检索用户数据,然后使用$http.post将这些数据提交到后端应用程序!然后,如果你需要与Facebook的后端对话,你可以在前端身份验证中使用从库返回的authResponse!通过这种方式,在你的应用程序域中,你只指定前端url。您的用户看不到后端应用程序!

一个小例子:

$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...");
    });
}