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

时间:2014-09-26 08:10:56

标签: php facebook angularjs authentication

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

前端正在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交谈?真正的代码示例将是最有帮助的。

1 个答案:

答案 0 :(得分: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...");
    });
}