2011-01-21 12 views
4

私は私が使用私のウェブサイトからユーザーをログアウトしたい:FacebookのPHP SDK getLogoutUrl()問題

$logoutUrl = $facebook->getLogoutUrl(array('next' => 'logout.php')); 

そして$logoutUrlディスプレイ正しいリンク、しかし、それは次で指定されたURLに私をリダイレクトしていません。ログアウトを開始したページにリダイレクトされます。

インターネット上には非常に多くの記事がありますが、それらはすべて同じ方法を使用していて、多くの人にとっては機能しません。 facebookからユーザーを正しくログアウトしてから、通常のログアウトスクリプトを実行するにはどうすればいいですか?

編集:これはうまくいきましたが、まだjavascriptSDK以外のログアウトが必要です。

<a id="logout" href="logout.php" onclick="FB.logout(function(response) { window.location = 'logout.php' }); return false;" title="<?php echo $lang['logout']; ?>"><?php echo $lang['logout']; ?></a> 

答えて

10

絶対URLを使用する必要があります。例えば

// (or https://) 
$here = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; 
$next = preg_replace('~#.*$~s', '', $here); 
$next = preg_replace('~\?.*$~s', '', $next); 
$next = preg_replace('~/[^/]*$~s', '/logout.php', $next); 
$logoutUrl = $facebook->getLogoutUrl(array('next' => $next)); 

それとも単に:

$logoutUrl = $facebook->getLogoutUrl(array('next' => 'http://...../logout.php')); 
+0

ありがとうございました...-) – Peeyush

0

私はこれが古いですけど、それはユーザをログアウトしていないためgetLogoutUrl()は、あなたの「次」のURLにリダイレクトされていない理由はありますかまったくリダイレ​​クトします。単にログアウトやリダイレクト(たとえば、header( "Location:$ logoutUrl"))を行うために必要な適切なURLを提供します。リダイレクトした後、ユーザーはログアウトされ、 "次の" URLが呼び出されます。

注:getLogoutUrl()を呼び出す前にFacebookのセッション変数(例:destroySession)をクリアしないでください。その場合、返されるURLに含まれるアクセストークンは、アクセストークンではなく0になります。

ドキュメントはあまり明確ではありませんが、関数の名前は適切です。