Я использую последнюю версию PHP SDK для Facebook (3.2.1)
Мне было интересно, когда выходите с помощью функции, предоставленной в base_facebook.php
из sdk, если есть способ остановить ее от фактического выхода из фейсбука, но все же удалить сеанс для приложения веб-сайта?
Ниже приведена функция выхода из 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) ); }
а затем мой logout url: $logoutUrl = $facebook->getLogoutUrl();
затем, очевидно, используя тег привязки для выхода из системы: <a href="<?php echo $logoutUrl; ?>">Logout</a>
Спасибо.
Не используйте $ logoutUrl.
<li><a href="?action=logout">Logout</a></li>
И в вашем php-коде добавьте это. Это приведет вас только к выходу из вашего приложения.
if(isset($_GET['action']) && $_GET['action'] === 'logout'){ $facebook->destroySession(); }
Создать файл 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(); }
Используйте loglogUrl для выхода из системы пользователя.
<?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://img.ruphp.com/sdk/4li2k73z.gif"> </a> <?php endif ?>
Надеюсь, он будет работать нормально