如何检查用户是否登录到Facebook

时间:2012-09-13 06:09:45

标签: php javascript facebook

我对facebook api完全不熟悉,我想问一下,最简单快捷的方法是知道一个人是否登录了facebook。

我想要的一个解决方案是发送一个javascript或php请求,看看我是否得到一些状态代码,告诉我该人是否登录(如果它返回404,那么这意味着他没有登录)。

更新

我发现这很容易“黑客”:

    function logged() {
    alert('logged');
}
function notlogged() {
    alert('not logged');
}
</script>

<script src="http://www.facebook.com/ajax/composer/attachment/question/question.php" onload="logged()" onerror="notlogged()">

但它不起作用...但是,这就是我要寻找的代码类型..代码将发送请求,如果失败,则会抛出错误

**update**

我不想引起用户的任何怀疑我正在检查他是否已登录。所以如果使用app_id,那么我认为我需要用户使用我的应用程序的权限..这是我需要采取另一种认证步骤。

我无法让用户知道他正在以任何方式对Facebook进行身份验证

4 个答案:

答案 0 :(得分:1)

如果我正确读取您的代码,只有在没有返回会话时才进行重定向吗?根据Facebook的例子中的评论:http://github.com/facebook/php-sdk/blob/master/examples/example.php(这个信息的好地方吧?),即使你回来了,你也不能认为它仍然有效。只有尝试一个需要登录用户的API调用才能确定。这是我看到可靠地确定登录/注销状态的最佳方式。

if ($session) {
  try {
    $me = $facebook->api('/me');
    if ($me) {
      //User is logged in
    }
  } catch (FacebookApiException $e) {
    //User is not logged in
  }
}

答案 1 :(得分:1)

试试这个,希望这会有所帮助

include 'facebook.php';
$facebook = new Facebook(array(
 'appId'  => $app_id, // your application id
 'secret' => $app_secret, // your application secret
'cookie' => false,
));

$user = $facebook->getUser();


$loginUrl   = $facebook->getLoginUrl(
        array(
            'scope' =>  '// put your permission'
        )
);

if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$permissions = $facebook->api('/me/permissions');   
   } catch (FacebookApiException $e) {
    $user = null;
  }
 }  

 if (!$user) {
    echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
  } 

答案 2 :(得分:0)

如果您有Facebook“标签”,则会在signed_request中提供有限的用户信息。对于Facebook标签,您需要创建一个应用程序。

否则,如果没有应用程序ID并提醒用户,您就不能这样做。

过去曾经有一些黑客攻击,一些聪明的人已经提出了评论框并测量了包含DIV的密度(如果登录它们曾经更大)或者包含facebook的FBML标签来显示一个登录按钮(登录更宽),但这些都被发现时被删除了。您在问题中尝试的链接可能也是如此。

Facebook,关于rpivacy的所有争论,都不会知道泄露信息 - 在你获得应用程序ID之前,询问用户然后你几乎可以得到所有东西......

答案 3 :(得分:-1)

检查此主题:https://stackoverflow.com/a/10698594/1789650

这应该回答你的问题。您必须加载JavaScript SDK才能使其正常工作。

相关问题