Facebook php SDK getLogoutUrl()问题

arm*_*rma 4 php facebook

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

$logoutUrl = $facebook->getLogoutUrl(array('next' => 'logout.php'));
Run Code Online (Sandbox Code Playgroud)

$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>
Run Code Online (Sandbox Code Playgroud)

Tha*_*hai 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));
Run Code Online (Sandbox Code Playgroud)

或者干脆:

$logoutUrl = $facebook->getLogoutUrl(array('next' => 'http://...../logout.php'));
Run Code Online (Sandbox Code Playgroud)