2011-12-26 175 views
0

我很難讓這個工作。我使用以下方法來產生註銷網址:facebook php-sdk沒有註銷

$logout = "https://www.facebook.com/logout.php?next=" . urlencode('http://' . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF']) . "&access_token=" . $facebook->getAccessToken(); 

產生正確的(與最後一個版本的工作)網址:

https://www.facebook.com/logout.php?next=http%3A%2F%2F...&access_token=AA....ZD 

然而,這實際上並不註銷用戶。我試過使用

$facebook->getLogoutUrl(array('next' => 'myurl')) 

它產生幾乎相同的網址。這也沒有奏效。我失去了爲什麼它不記錄用戶。我其實嘗試手動將地址放入地址欄,但它將我重定向到Facebook主頁。

回答

2

如果您在使用Facebook PHP SDK(有時甚至沒有它)時請求offline_access權限,它會使默認註銷功能無法正常工作。爲了解決這個問題,以下爲我工作:

 
//change your logout url to 
$logoutUrl = $facebook->getLogoutUrl(array('next' => ($fbconfig['baseurl'].'logout.php'))); 

//on logout page 
setcookie('fbs_'.$facebook->getAppId(), '', time()-100, '/', 'domain.com'); 
session_destroy(); 
header('Location: /'); 

希望它可以幫助

+0

感謝sudhir在註銷頁面上的setcookie工作得很好。這是我爲facebook註銷網址工作的唯一修復程序。 – peter 2012-06-14 04:48:00

0

這可能是因爲PHP會話,會話cookie仍然完好無損。我寫了a short article,試圖揭開FB神祕/登出的神祕面紗。

+0

不是很容易找到,是嗎? – Sven 2012-10-19 23:11:40

3

facebook php sdk使用php會話記錄令牌,以便讓您登錄。要清除它,您只需銷燬會話即可。

的index.php:

<a href="logout.php">Log out</a> 

logout.php

$facebook = new Facebook(array('appId' => FB_APP_ID, 'secret' => FB_APP_SECRET, 'cookie' => true)); 
$facebook->destroySession(); 
header('location: index.php'); 

FB_APP_ID和FB_SECRET是我的具體應用程序的信息。用你自己的替換。