[英]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.