检查Facebook登录状态:客户端vs服务器端


Check Facebook login status: Client side vs Server side

在我正在建设的网站,我需要检查用户是否登录到facebook。我有两种可能。我可以在服务器端使用如下PHP代码:

$facebook = new Facebook(array(
                'appId'  => _FACEBOOK_APP_ID,
                'secret' => _FACEBOOK_SECRET,
                'cookie' => true));
$me = $facebook->api("/me");
if (isset($me["id"]) {
    // User is logged in.
} else {
    // User is not logged in.
}

或者,我可以在客户端这样做,使用如下的javascript:

FB.getSession();
if (session != null) {
    // User is logged in.
} else {
    // User is not logged in
}

我想知道这两种方法的优缺点。

我只是想指出,您显示的JavaScript替代方案已弃用,不再工作,文档链接(http://developers.facebook.com/docs/reference/javascript/FB.getSession/)重定向到新的getAuthSession()函数来处理OAuth2

截至2011年12月13日,JavaScript SDK现在只支持OAuth 2.0身份验证。的在JS SDK中启用OAuth 2.0的功能是在7月份首次推出的。所有的应用程序都是在2011年10月1日进行测试和迁移。更改后,请确保您正在使用FB。getAuthResponse获取访问令牌,而不是FB.getSession。详细阅读改变她的

    你的"服务器端"方法是不正确的。只要您正在使用PHP-SDK,我建议您遵循库附带的示例中的方法(在进行图形调用$facebook->getSession();之前检查会话)。你需要"明白"你真正"需要"的是什么!
    检查用户是否"登录到Facebook"并不意味着他"连接到您的应用程序/网站"

我建议你再读一遍Facebook文档,以更好地理解API

我想主要的区别在于,在客户端,连接是在客户端和facebook之间建立的。在服务器端,它在你的服务器和facebook之间。因此,如果你在服务器端做所有的事情,服务器的负载会变得很高。