Facebook php SDK getLogoutUrl()问题

Facebook php SDK getLogoutUrl()问题,php,facebook,Php,Facebook,当我想从我的网站注销用户时,我使用: $logoutUrl = $facebook->getLogoutUrl(array('next' => 'logout.php')); 并且,$logoutUrl显示正确的链接,但它不会将我重定向到下一步中指定的url。它将我重定向到开始注销的页面 <a id="logout" href="logout.php" onclick="FB.logout(function(response) { window.location = 'log

当我想从我的网站注销用户时,我使用:

$logoutUrl = $facebook->getLogoutUrl(array('next' => 'logout.php'));
并且,
$logoutUrl
显示正确的链接,但它不会将我重定向到下一步中指定的url。它将我重定向到开始注销的页面

<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>
看起来,互联网上有很多文章,但它们都使用相同的方法,对许多人来说,这些方法不起作用。 如何正确地从facebook注销用户,然后执行常规注销脚本

EDIT:这已奏效,但仍需要一些非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>

您应该使用绝对URL。e、 g

//   (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'));

我知道这很旧,但getLogoutUrl()没有重定向到“下一个”url的原因是它根本没有注销用户或重定向。它只是为您提供了注销和重定向所需的正确url(例如标题(“位置:$logoutUrl”))。重定向后,用户将注销,并调用“下一个”url

注意:在调用getLogoutUrl()之前,不要清除Facebook会话变量(例如destroySession)。如果您这样做,返回的url中包含的访问令牌将等于0,而不是您的访问令牌

文档对此不是很清楚,但是函数的命名非常恰当