Facebook javascript + php,如何保证数据的有效性?

时间:2013-01-15 09:31:30

标签: php javascript facebook

我在前端使用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中恢复的,考虑到所有前端数据都可以被黑客攻击,使用token如何确保用户数据在php上有效?

2 个答案:

答案 0 :(得分:0)

答案是使用PHP而不是JavaScript执行图形调用,特别是如果客户端脚本的唯一目的是将其发送到服务器;

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

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

答案 1 :(得分: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);
}
?>