2011-08-22 66 views
-2

你好,我正在尝试使用file_get_contents注销。Facebook登出

这里是我的代码

<?php echo file_get_contents("http://www.facebook.com/logout.php"); ?> 

我不能够注销来自Facebook。

有人能帮助

感谢

+0

我认为这是一个有效的问题。 Rajat,Facebook会阻止您的请求,因为user_agent未设置。在你的'file_get_contents'行之前,用'ini_set('user_agent','Mozilla/5.0(compatible; Googlebot/2.1; + http://www.google.com/bot.html)'这样的一行设置用户代理) ;'当然,你需要查询字符串中的凭证,像Rijk建议 –

回答

2

注销涉及比做一个简单的HTTP请求多得多。首先,你需要你试图注销的用户的会话ID。当您执行此代码时,您的服务器实际上是执行请求的服务器,而不是使用您系统的用户(并登录到Facebook)。所以Facebook不知道你想要注销的是谁。

如果你真的想这样做,你应该设置一个Curl会话,并传递会话ID。但更容易的是,为用户提供一个链接。如果他们转到URL,他们的会话ID将自动传递。

+0

我有会话ID。如何设置卷曲会话请告诉 –

+0

以下是一个教程:http://www.smooka.com/blog/2009/07/24/maintaining-php-session-when-using-curl/ – Rijk

0

以下添加到您的网站页面的最开始

session_start(); 

if($_GET['logoutfrmfb']=="logout") 
{ 
    unset($_SESSION['fb_{your app id}_code']); 
    unset($_SESSION['fb_{your app id}_access_token']); 
    unset($_SESSION['fb_{your app id}_user_id']); 
} 

查找和编辑的src/base_facebook.php以下行(可能是线506-515)

public function getLogoutUrl($params=array()) { 
return $this->getUrl(
    'www', 
    'logout.php', 
    array_merge(array(
    'next' => $this->getCurrentUrl().'?logoutfrmfb=logout', 
    'access_token' => $this->getAccessToken(), 
    ), $params) 
    ); 
    } 

作品我!