【问题标题】:Facebook php SDK getLogoutUrl() problemFacebook php SDK getLogoutUrl() 问题
【发布时间】:2011-06-13 05:44:36
【问题描述】:

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

$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>

【问题讨论】:

    标签: php facebook


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我知道这是旧的,但 getLogoutUrl() 没有重定向到您的“下一个”网址的原因是因为它根本不会注销用户或重定向。它只是为您提供了用于注销和重定向的正确 url(例如 header("Location: $logoutUrl"))。重定向后,用户将被注销并调用您的“下一个”url。

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

      文档对此不太清楚,但该函数的命名非常恰当。

      【讨论】:

        猜你喜欢
        • 2012-02-26
        • 1970-01-01
        • 1970-01-01
        • 2012-12-09
        • 2014-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多