Php 如何注销facebook

Php 如何注销facebook,php,facebook,facebook-graph-api,facebook-php-sdk,Php,Facebook,Facebook Graph Api,Facebook Php Sdk,我有以下脚本,允许用户使用其facebook帐户登录我的网站,请求适当的权限,如果接受,它将在墙上发布消息: <?php require 'facebook.php'; $facebook = new Facebook(array( 'appId' => 'removed for security reasons', 'secret' => 'removed for security reasons', 'cookie

我有以下脚本,允许用户使用其facebook帐户登录我的网站,请求适当的权限,如果接受,它将在墙上发布消息:

<?php
    require 'facebook.php';

    $facebook = new Facebook(array(
        'appId'  => 'removed for security reasons',
    'secret' => 'removed for security reasons',
        'cookie' => true,
    ));

    $session = $facebook->getSession();

    if ($session) {

        if (isset($_GET[id])) {
            $post = $facebook->api("/" . $_GET['id'] . "/feed", "POST",  array('message' => 'Hello!'));
            echo 'A message has been posted on your friends wall';

        } else {

            $friends = $facebook->api('/me/friends');

            foreach ($friends as $key=>$value) {
                echo 'You have ' . count($value) . ' friends<br />';

                foreach ($value as $fkey=>$fvalue) {
                    echo 'friend id = ' . $fvalue[id] . ' - friend name = ' . $fvalue[name] . ' - <a href="/stage0.php?id=' . $fvalue[id] . '">post message</a><br />';
                }
            }
        }

    } else {

        $loginUrl = $facebook->getLoginUrl(array(
            'req_perms' => 'publish_stream',
            'next' => 'http://'.$_SERVER['SERVER_NAME'].'/stage0.php',
            'cancel_url' => 'http://'.$_SERVER['SERVER_NAME'].'/cancel.php',
        ));

        header('Location: '.$loginUrl);
    }
?>

然后,我使用以下脚本将用户注销:

<?php
    error_reporting( E_ALL | E_STRICT );
    ini_set('display_errors', 1);
?>

<?php
    session_start();
?>

<html>
    <head>
        <title></title>

        <?php
            $_SESSION = array(); 
            session_destroy();
        ?>

        <meta http-equiv="refresh" content="0;index.php">
    </head>

    <body>
        <h1>logout</h1>
    </body>
</html>

注销

这会清除我创建的会话,但根本不会将它们从facebook注销。如何清除我创建的会话并将其从facebook注销?

从应用程序和facebook注销用户的推荐方法是调用javascript SDK的注销功能

<a href="/auth/logout" onclick="FB.logout();">logout</a>


检查:

从应用程序和Facebook注销用户的推荐方法是调用javascript SDK的注销功能

<a href="/auth/logout" onclick="FB.logout();">logout</a>


检查:

将此用作注销URL:

这是您的代码:

if(isset($_GET['action']) && $_GET['action'] === 'logout'){
    $facebook->destroySession();
}
这会让用户退出应用程序,而不是facebook本身,完全退出facebook,这是不推荐的,因为这会让一些用户感到不安,请将此添加到您的会话中,如果($session){为

$logoutUrl = $facebook->getLogoutUrl();
然后,对于您的注销URL,请使用:

<a href="' . $logoutUrl . '">Logout</a>

将此用作注销URL:

这是您的代码:

if(isset($_GET['action']) && $_GET['action'] === 'logout'){
    $facebook->destroySession();
}
这会让用户退出应用程序,而不是facebook本身,完全退出facebook,这是不推荐的,因为这会让一些用户感到不安,请将此添加到您的会话中,如果($session){为

$logoutUrl = $facebook->getLogoutUrl();
然后,对于您的注销URL,请使用:

<a href="' . $logoutUrl . '">Logout</a>


一旦你进入,facebook永远不会让你离开:-P@Guy福克斯——欢迎来到酒店Facebook。@Spudley哈哈,这让我想起了关于Facebook的燕麦卡通,搞笑:-)一旦你进去,Facebook永远不会让你出去:-P@Guy福克斯——欢迎来到酒店Facebook。@Spudley哈哈,它让我想起了关于Facebook的燕麦卡通,hilarious:-)我如何在服务器端做到这一点。我是通过服务器端登录的,因此从服务器端注销对于我的应用程序来说是理想的。您必须同时执行这两项操作,这就是为什么我让服务器端的href/auth/logout,当我在那里接到一个呼叫时,我可以做任何我想做的事情;)onclick javascript函数主要用于c客户端能否请您提供有关/auth/logout的更多信息,因为我不想做这个客户端,我想做这个服务器端。我只是删除会话,服务器端,因为我主要使用zend,我会做一些类似的事情:zend_Registry::get('auth')->clearIdentity()…我如何在服务器端做到这一点。我是通过服务器端登录的,因此从服务器端注销对于我的应用程序来说是理想的。您必须同时执行这两项操作,这就是为什么我让href/auth/logout(位于服务器端)退出,然后当我在服务器端接到呼叫时,我可以做任何我想做的事情;)onclick javascript函数主要用于客户端sidecould请提供关于/auth/logout的更多信息,因为我不想做这个客户端,我想做这个服务器端。我只是删除会话,服务器端,因为我主要使用zend,我会做一些类似的事情:zend_Registry::get('auth')->clearIdentity()…事实上,平台政策要求用户注销Facebook。不是说这有意义,但它确实存在。#6@Ahh,哇,谢谢你指出这一点!就像你说的,这没有意义,如果我在使用Facebook时注销应用程序/网站,我想继续登录Facebook,不知道你是否可以选择og退出应用程序和facebook,将对此进行研究,但感谢您指出。事实上,平台政策要求用户退出facebook。不是说这有意义,但它确实存在。#6@ah,哇,感谢您指出这一点!正如您所说,如果我在使用fa时退出应用程序/网站,这是没有意义的cebook,我想继续登录facebook,不知道你是否可以选择退出应用程序,facebook将对此进行研究,但感谢你指出这一点。