При работе с Facebook SDK нужно помнить, что когда вы проходите аутентификацию, вы, по сути, входите в Facebook и на свой веб-сайт отдельно - вам необходимо учитывать эту логику.
После входа в Facebook создается файл cookie для аутентификации (не сеанс). Возможно, вы используете сеансы для аутентификации вашего сайта, но Facebook использует cookie.
Вам нужно позвонить $ facebook-> destroySession (); , если вы не хотите, чтобы UID возвращался при последующих вызовах.
Посмотрите на мой код CodeIgniter, метод * index.php / authenticate / kill_session * вызывает вышеуказанный метод destroySession (); , а также очищает сеанс моего приложения - это полностью выводит меня из системы. Facebook и мое приложение:
<?php
class Facebook_model extends CI_Model
{
public function __construct()
{
parent::__construct();
$this->config->load('facebook');
$config = array(
'appId' => $this->config->item('facebook_api_key'),
'secret' => $this->config->item('facebook_secret_key'),
'fileUpload' => false,
);
$this->load->library('Facebook', $config);
}
public function connect()
{
$user = $this->facebook->getUser();
$profile = null;
if($user)
{
try {
$profile = $this->facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
$fb_data = array(
'me' => $profile,
'gender' => $profile['gender'],
'uid' => $user,
'loginUrl' => $this->facebook->getLoginUrl(array('scope' => 'email,user_birthday')),
'logoutUrl' => $this->facebook->getLogoutUrl(array('next' => base_url('index.php/authenticate/kill_session'))),
);
return $fb_data;
}
public function disconnect()
{
$this->facebook->destroySession();
}
} // EOC