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

时间:2011-04-26 11:59:59

标签: php javascript facebook

在我正在构建的网站中,我需要检查用户是否登录到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
}

我想知道这两种方法的优点和缺点是什么。

3 个答案:

答案 0 :(得分:1)

  1. 您的“服务器端”方法不正确。只要您使用PHP-SDK,我建议您按照库附带的example中的方法(在进行图形调用之前检查会话$facebook->getSession();
  2. 你需要“理解”你真正“需要”的东西! 检查用户是否“登录到Facebook 表示他“已连接到您的应用程序/网站
  3. 我建议您再次阅读Facebook Documentation以更好地了解API。

答案 1 :(得分:1)

我只想指出您展示的JavaScript替代品已弃用且不再有效,文档链接(http://developers.facebook.com/docs/reference/javascript/FB.getSession/)重定向到用于处理OAuth2的新getAuthSession()函数

  

截至2011年12月13日,JavaScript SDK现在仅支持OAuth 2.0进行身份验证。该   能够在JS SDK中启用OAuth 2.0的能力于7月首次推出。所有应用程序都是直到   2011年10月1日进行测试和迁移。有了这个改变,请确保您正在使用   FB.getAuthResponse获取访问令牌而不是FB.getSession。详细了解具体内容   改变她

答案 2 :(得分:0)

我猜主要区别在于,在客户端,客户端和Facebook之间建立了连接。在服务器端,它位于您的服务器和Facebook之间。因此,如果您在服务器端执行所有操作,则服务器的负载会很高。