Facebook PHP SDK не выходит из системы

Это действительно неприятная проблема (ошибка?), которую я пытался выяснить. Кажется, что многие люди жалуются на одну и ту же проблему, но нет определенного решения или руководства по устранению этой проблемы.

В любом случае, моя проблема в том, что я могу заставить SDK нормально регистрировать пользователя, однако, когда они нажимают LogOut. Он перенаправляет их на facebook.com/home.php (даже несмотря на то, что параметр «следующий» установлен на мой сайт), и пользователь все еще не выходит из системы, когда я снова захожу на свой сайт...

Вот код... (библиотека Facebook автоматически загружается через конфигурацию Codeigniter)

public function DestroySession()
{
        $this->load->helper('url');

if($this->facebook->getUser())
{
    $this->facebook->destroySession();


    $logout = $this->facebook->getLogoutUrl(array("next" => "http://mysite.com/"));


    redirect($logout, 'location', 301);
}
 }

Так что я получил это, чтобы наконец работать. Вы можете увидеть новую функцию ниже. По некоторым причинам, в которых я не совсем уверен, вы должны выполнить эти шаги.

public function DestroySession()
{
    $this->load->helper('url');



//Get User ID
$user = $this->facebook->getUser();

if ($user)
{
    try
    {
        // Proceed knowing you have a logged in user who's authenticated.
       $user_profile = $this->facebook->api('/me');

   //   print_r($user_profile);
    } catch (FacebookApiException $e)
    {

        log_message('eror', $e);

        $user = null;
    }
}

// Login or logout url will be needed depending on current user state.
if ($user)
{
if( session_id() ){} else { session_start() ; }

    $logoutUrl = $this->facebook->getLogoutUrl($params = array('next' => base_url()));
    //echo 'Logout; '.($logoutUrl);
    $this->facebook->destroySession();
    redirect($logoutUrl, 'refresh');



}
}

person smooth_smoothie    schedule 17.01.2013    source источник
comment
Это работает, если вы удалите параметр next?   -  person ifaour    schedule 17.01.2013
comment
Нет, делает то же самое.   -  person smooth_smoothie    schedule 17.01.2013
comment
Из любопытства, зачем использовать 301?!   -  person ifaour    schedule 17.01.2013


Ответы (2)


Я использую Javascript, используя такую ​​​​ссылку:

<a href="/logout" onclick="FB.logout();">Logout</a> 

Это сначала вызывает функцию onclick и выполняет выход из Facebook, а затем вызывается обычная функция /logout моего сайта. Я бы также предпочел решение на стороне сервера, оно выводит меня из системы на обоих сайтах.

Проверьте http://developers.facebook.com/docs/reference/javascript/FB.logout/

person Somnath Muluk    schedule 18.01.2013
comment
Это еще один подход, который будет работать, но я хотел придерживаться PHP SDK. - person smooth_smoothie; 18.01.2013

Смотрите мой оригинальный вопрос для большего контекста.

public function DestroySession()
{
    $this->load->helper('url');



//Get User ID
$user = $this->facebook->getUser();

if ($user)
{
    try
    {
        // Proceed knowing you have a logged in user who's authenticated.
       $user_profile = $this->facebook->api('/me');

   //   print_r($user_profile);
    } catch (FacebookApiException $e)
    {

        log_message('eror', $e);

        $user = null;
    }
}

// Login or logout url will be needed depending on current user state.
if ($user)
{
if( session_id() ){} else { session_start() ; }

    $logoutUrl = $this->facebook->getLogoutUrl($params = array('next' => base_url()));
    //echo 'Logout; '.($logoutUrl);
    $this->facebook->destroySession();
    redirect($logoutUrl, 'refresh');



}
}
person smooth_smoothie    schedule 18.01.2013