如何使用facebook SDK注销用户?

Min*_*iel 9 php facebook facebook-graph-api facebook-php-sdk

我正在使用facebook登录我的网站facebook php sdk.

我注意到的是logout链接没有做任何事情.在我注销后,用户仍然可以浏览该站点.这是我的代码facebook.php:

<?php
    require 'src/facebook.php';
    $facebook = new Facebook(array(
           'appId'  => '*************',
           'secret' => '******************************',
    ));
    $user = $facebook->getUser();
    $loginUrl = $facebook->getLoginUrl();
    echo "<a href='$loginUrl'>login</a>";

    $logoutUrl = $facebook->getLogoutUrl();
    echo $loginUrl; 
    if($user){
        session_start() ; 
        $_SESSION['user_info'] = $user; 
        $_SESSION['user_pro']= $facebook->api('/me');
        print_r($_SESSION);
    }
    else{
        echo 'not logged in '; 
    }

    echo "<a href='example.com/logout.php'>log out </a>"
?>
Run Code Online (Sandbox Code Playgroud)

code在登录时工作正常.注销链接应该销毁会话.这是页面的标题:

<?php 
    print_r($_SESSION) ; 
    header('example.com') ; 
?>
Run Code Online (Sandbox Code Playgroud)

我的logout.php页面的问题是它根本检测不到会话.我不知道这是一个facebook api问题还是我的php问题.

如何使用facebook SDK登录用户?

小智 19

您可以从您的站点以及Facebook注销,如下所示,将您的站点URL提供给下一个参数并销毁会话

$token = $facebook->getAccessToken();
$url = 'https://www.facebook.com/logout.php?next=' . YOUR_SITE_URL .
  '&access_token='.$token;
session_destroy();
header('Location: '.$url);
Run Code Online (Sandbox Code Playgroud)

您还必须将它们从您的网站注销,并且您必须阻止您的网站自动记住您的用户并立即重新登录.

禁用在用户中自动登录的代码并尝试再次注销.销毁会话不会阻止您的网站为记住的用户创建全新的有效会话.