Facebook返回给Javascript SDK的访问令牌能在服务器端与PHP SDK一起工作吗?

Can an access token returned by Facebook to the Javascript SDK work server-side with the PHP SDK?

本文关键字:SDK 一起 PHP 工作 服务器端 返回 Javascript Facebook 访问令牌      更新时间:2023-09-26

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

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

是的,这应该可以工作。看看这个问题:如何正确处理会话和访问令牌与Facebook PHP SDK 3.0?

这是旧的JS和新的PHP SDK的解决方案。在我的应用程序中,我通过一个表单将JS SDK生成的访问令牌发送给我的PHP。我毫不怀疑,通过ajax发送访问令牌也是有效的!

使用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'});