簡體   English   中英

如何檢查用戶是否登錄到Facebook

[英]How to check if a user is logged in to facebook

我對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的身份驗證

如果我正確地閱讀了您的代碼,則僅當沒有會話返回時,您才進行重定向嗎? 根據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
  }
}

試試這個,希望這會有所幫助

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>";
  } 

如果您有一個Facebook“標簽”,那么在signed_request中會向您提供有限的用戶信息。 對於facebook選項卡,您需要創建一個應用程序。

否則,沒有應用程序ID並警告用戶,您將無法執行此操作。

過去曾發生過一些駭客活動,其中一些更聰明的舉動是放置評論框並衡量所含DIV的高低(如果已登錄,它們通常會更大)或包括Facebook FBML選項卡以顯示登錄信息按鈕(登錄范圍更廣),但是這些被發現時便全部刪除。 您在問題中嘗試的鏈接可能也是如此。

在所有關於復制性的辯論中,Facebook不會故意泄漏信息-直到您獲得應用程序ID之前,詢問用戶您便可以獲取幾乎所有內容...

檢查此主題: https : //stackoverflow.com/a/10698594/1789650

這應該可以回答您的問題。 您必須加載javascript SDK才能使其正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM