2013-07-29 112 views
2

我使用Facebook的最新版本的PHP SDK的(3.2.1)PHP SDK - Facebook的注销

我想知道,注销时使用从SDK中base_facebook.php提供的功能,如果有办法阻止它实际注销Facebook,但仍然删除网站应用程序的会话?

下面是base_facebook.php

/** 
* Get a Logout URL suitable for use with redirects. 
* 
* The parameters: 
* - next: the url to go to after a successful logout 
* 
* @param array $params Provide custom parameters 
* @return string The URL for the logout flow 
*/ 

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

注销功能,然后我的退出网址是:$logoutUrl = $facebook->getLogoutUrl();那么显然使用锚标记注销:<a href="<?php echo $logoutUrl; ?>">Logout</a>

谢谢。

回答

6

不使用$ logoutUrl。

<li><a href="?action=logout">Logout</a></li> 

并在您的php代码中添加此项。这只会将您从应用中注销。

if(isset($_GET['action']) && $_GET['action'] === 'logout'){ 
     $facebook->destroySession(); 
    } 
+0

谢谢你的,我只是将使用session_destroy();但似乎也从Facebook注销,这虽然有用,所以谢谢! – Blake

+0

不客气:) – 2013-08-05 07:14:13

2

创建一个文件logout.php

<?php 
session_start();   //start session 
$_SESSION = array(); //clear session array 
session_destroy();  //destroy session 
?> 
<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Log Out</title> 
</head> 

<body> 
<p>You have successfully logged out!</p> 
<p>Return to the <a href="....index.php">Home</a> page</p> 

</body> 
</html> 

,改变你的代码,你检查用户状态

if ($user) { 
    $params = array('next' => 'http://....../logout.php'); 
    $logoutUrl = $facebook->getLogoutUrl($params); 
} else { 
    $loginUrl = $facebook->getLoginUrl(); 
} 

使用$ logoutUrl用于注销用户。

<?php if ($user): ?> 
<?php echo "Welcome, ".$me['first_name']. " " .$me['last_name'] ." <br />"; 
     echo "Id: " . $me['id'] ." <br />"; ?> 

<a href="<?php echo $logoutUrl; ?>"> Logout </a> <br /> 

<?php else: ?> 
    <a href="<?php echo $loginUrl; ?>"> 

    <img src="http://static.ak.fbcdn.net/rsrc.php/zB6N8/hash/4li2k73z.gif"> </a> 
<?php endif ?> 

希望它会正常工作