Facebook php SDK getLogoutUrl()问题

时间:2011-01-21 15:42:30

标签: php facebook

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

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

并且$logoutUrl显示正确的链接,但是它不会将我重定向到下一个指定的网址。它会将我重定向到开始注销的页面。

因为它看起来互联网上有很多文章,但它们都使用相同的方法,对于许多人来说,这些方法都不起作用。 如何正确地从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>

2 个答案:

答案 0 :(得分:10)

您应该使用绝对网址。 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'));

答案 1 :(得分:0)

我知道这是旧的,但是getLogoutUrl()没有重定向到你的“下一个”网址的原因是因为它没有记录用户或重定向。它只是为您提供了正确的URL,您需要使用它来进行注销和重定向(例如header(“Location:$ logoutUrl”))。重定向后,用户将被注销,您的“下一个”网址将被调用。

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

文档对此不太清楚,但该函数名称非常合适。