1

我在前端使用 facebook 的 javascript SDK:

jQuery("#pct_fbbutton").live("click",function(){
        FB.getLoginStatus(function(response) {
        if (response.status === 'connected') {
            console.log('Conected');
            FB.api('/me/likes', function(response) { user_likes = response;
            FB.api('/me', function(response)       { user       = response; 
                send_server(user, user_likes);
            });
            });

        } else if (response.status === 'not_authorized') {
            console.log('not_authorized');
            login();
        } else {
            console.log('not_logged_in');
            login();
        }
    });
});

如您所见,在用户使用 facebook 登录后,我会通过 AJAX 将两个对象发送到 php 脚本(使用函数send_server)。

我可以在后端使用 $facebook->getAccessToken() 访问当前生成的令牌,但据我所知,这是从 javasript sdk 制作的 cookie 中检索的,考虑到所有前端数据都可以被黑客入侵,使用令牌如何确保用户数据在 php 上有效吗?

4

2 回答 2

0

答案是使用 PHP 而不是 JavaScript 来执行图形调用,尤其是当您的客户端脚本的唯一目的是将其发送到服务器时;

假设您进行了正确的 https 证书检查,那么在服务器上收集数据是确保数据未被篡改的唯一实用方法。

访问令牌的有效性也很简单,因为如果提供的 access_token 值无效,Facebook 将返回错误。

于 2013-01-15T09:36:44.137 回答
0

在后端检索到 access_token 后,尝试获取用户的个人资料。如果获取成功,则客户端为您提供了正确的 access_token,您应该保存它。像下面的例子应该可以工作,但你可以找到更多的例子:

<?php

$facebook = new Facebook(array(
    'appId'  => $initMe["appId"],
    'secret' => $initMe["appSecret"],
));

$facebook->setAccessToken($initMe["accessToken"]);
$user = $facebook->getUser();

if ($user) { 
   $user_profile = $facebook->api('/me');
   print_r($user_profile);
}
?>
于 2013-01-15T09:50:37.577 回答