2

我对 facebook api 完全陌生,我想问一下,知道一个人是否登录到 facebook 的最简单和最快的方法是什么。

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

更新:

我发现了这个简单的“hack”:

    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

4 回答 4

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
  }
}
于 2012-09-13T06:12:21.267 回答
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>";
  } 
于 2012-09-13T06:15:37.110 回答
0

如果您有一个 facebook“标签”,那么有限的用户信息将作为 signed_request 的一部分提供给您。对于 facebook 标签,您需要创建一个应用程序。

否则,如果没有 App ID 并提醒用户你不能这样做。

过去有过黑客攻击,一些更聪明的方法是放置评论框并测量包含 DIV 的高度(如果登录,它们过去会更大)或包含 facebooks FBML 选项卡以显示登录按钮(登录更宽),但这些论文在被发现时都被删除了。您在问题中尝试的链接可能也是如此。

Facebook,尽管关于 rpivacy 的所有辩论,都不会故意泄露信息 - 直到你获得一个应用程序 ID,询问用户然后你几乎可以获得所有东西......

于 2012-09-13T06:30:20.363 回答
-1

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

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

于 2013-06-12T22:44:52.967 回答