6

我正在建立一个使用 Facebook 连接的网站。我正在使用 javascript SDK 对用户客户端进行身份验证,并在每次用户登录时在我的服务器上调用 AJAX 方法以检查我的应用程序是否知道该用户,以及该用户是否是新用户以将其 FBID 存储在我的数据库中将他们注册为新用户。

我的问题是:Facebook 返回给 Javascript SDK 的访问令牌能否在服务器端使用(例如使用 PHP SDK)?我可以通过 AJAX 调用将访问令牌字符串发送到服务器,将其存储在我的数据库中(连同时间戳,以便我知道它的有效期),然后使用它来调用图形 API 服务器端吗?这甚至是合乎逻辑的事情吗?

4

2 回答 2

3

是的,这应该有效。看这个问题:如何使用 Facebook PHP SDK 3.0 正确处理会话和访问令牌?

这是旧 JS 和新 PHP SDK 的解决方法。在我的应用程序中,我通过表单将 JS SDK 生成的访问令牌发送到我的 PHP。我毫不怀疑这也可以通过 ajax 发送访问令牌来实现!

于 2011-07-22T15:18:04.740 回答
3

使用jQuery:

//Set an error message
var oops = ("Put your something went wrong message here.");
//Function to post the data to the server
    function save(uid, accessToken){
        $.post("../foo/bar", { uid: uid, access_token: accessToken, etc, etc }, function(data){
            alert("Successfully connected to Facebook.");
            location.reload();
        }, "text");
    }
    function handler(x){
        if (x.authResponse){
            var token = x.authResponse.accessToken;
            var uid   = x.authResponse.id;
            FB.api("/me/accounts", {access_token: token},
            function(response){
                if(response.data.length == 0) {
//Regular facebook user with one account (profile)
                    save(uid, token);
                }else{
//Handle multiple accounts (if you want access to pages, groups, etc)
                }
            });
        }else{
            alert(oops);
        }
    }
    FB.login(handler, {scope: 'The list of permissions you are requesting goes here'});

任何改进建议总是受到赞赏。

于 2011-08-02T14:45:50.740 回答