Facebook的API不会退出

问题描述:

的index.php:Facebook的API不会退出

blablabl 
<?php include("fb-api/****-api.php"); ?> 
blablabal 
    <?php if ($user): ?> 
     <a href="<?php echo $logoutUrl; ?>">Logout</a> 
    <?php else: ?> 
     <div> 
     <a href="<?php echo $loginUrl; ?>">Login with Facebook</a> 
     </div> 
    <?php endif ?> 

* * -api.php:

<?php 

require 'src/facebook.php'; 

// Create our Application instance (replace this with your appId and secret). 
$facebook = new Facebook(array(
    'appId' => '******', 
    'secret' => '***********', 
)); 
$user = $facebook->getUser(); 
    if ($user) { 
     $logoutUrl = $facebook->getLogoutUrl(); 
    } else { 
     $loginUrl = $facebook->getLoginUrl(); 
    } 

?> 

链接:http://music.x-game.info/ 好吧,我登录没有任何问题,但是当我按下退出链接它不退出我,任何想法?

而不是使用facebook-> getlogouturl 将用户重定向到另一个文件:logout.php ,包括这个:

<?php 
    $facebook->destroySession(); 
    session_destroy(); 
    ?> 
+0

这样做。这工作。整个getLogoutUrl()不起作用。 –

+0

这是Facebook不允许*,因为它不会将用户从Facebook上签名。根据政策I.6,'“您的网站必须提供明确的‘退出’选项,还注销用户的Facebook的。”'从https://developers.facebook.com/policy/取 – andrewtweber

注销后,用户将进入您的主页并自动登录,因为$ user变量将被设置。

您可以使用数据库来控制登录/注销。

+0

AHAM,我可以让我的索引只检查,如果用户登录,并如果不是不这样做? –

+0

实际上,Facebook没有登录/注销功能。如果有人进入运行$ user = $ facebook-> getUser()的页面;代码,$ user变量将始终设置。你必须使用一个数据库,它可能是txt文件。 查看数据库,如果用户$ [“facebookid”]注销,然后重定向到登录页面。 – tersakyan

将创建注销URL时的redirect_uri设置为http://yourdomain.tld/logout.php之类的内容。

在该脚本中,首先再次初始化Facebook SDK,将其称为destroySession方法,然后调用PHP自己的session_destroy

然后重定向到您的首页或任何其他。