2012-02-23 3 views
3

Я использую SDK PHP FB вместе с Code Igniter 2 Framework.Facebook PHP SDK - Выход из системы

У меня есть страница регистрации, где я могу отобразить ссылку для пользователя, чтобы щелкнуть и одобрить приложение и предоставить ему доступ к их основным данным и электронной почте. Кажется, что он работает нормально (хотя я установил его как всплывающее окно, оно не всплывает, оно просто отображается на одной странице!).

Моя проблема заключается в том, что после входа в систему с помощью FB на странице отображается ссылка для выхода из системы, которая при щелчке должна выходить из системы (и, следовательно, снова показывать ссылку для входа), но она не работает.

У меня есть набор параметров для перевода страницы на определенную страницу, и это действительно работает. Просто по какой-то причине «сессия» FB закрывается, и пользователь остается в системе с FB.

Любые идеи?

мой код в мой контроллер:

// Facebook Connect 
    $fb_config = array(
     'appId' => 'xxx', 
     'secret' => 'xxx' 
    ); 

    $this->load->library('facebook', $fb_config); 

    $user = $this->facebook->getUser(); 

    if ($user) { 
     try { 
      $data['user_profile'] = $this->facebook->api('/me'); 
     } catch (FacebookApiException $e) { 
      $user = null; 
     } 
    } 

    if ($user) { 
     $params = array('next' => 'http://localhost/game/index.php/game/login'); 
     $data['logout_url'] = $this->facebook->getLogoutUrl($params); 
    } else { 
     $params = array('scope' => 'email, publish_stream, publish_actions', 'display' => 'popup'); 
     $data['login_url'] = $this->facebook->getLoginUrl($params); 
    } 

Последний маленький вопрос - я должен быть даже с помощью PHP SDK, или я должен использовать Javascript SDK? Я не могу найти любую информацию, по которой лучше всего работать! Confused.com

+0

Что делать, если вы пытаетесь пример поставляется с PHP SDK? Выходит ли он из текущего пользователя? – zerkms

+0

Просто попробовал. Показывает то же поведение. Позволяет мне зарегистрироваться в приложении, входить в систему, просматривать информацию на странице. Нажатие «logout» ничего не делает, за исключением того, что я фактически выхожу из FB (но не на тестовую php-страницу !!!) –

+0

файл с ошибкой на php sdk github, а затем, возможно, – zerkms

ответ

3

Должен ли я использовать PHP SDK или использовать Javascript SDK?

Если ваше приложение может быть создано с помощью SDK для JavaScript вместо PHP SDK, тогда зайдите в него. Сохраните циклы процессора вашего сервера для чего-то другого. Он также позволяет вам асинхронно выполнять логин, который может быть приятным.

Комплексные приложения обычно используют как SDK JavaScript, так и PHP SDK - в этом случае логин часто обрабатывается на стороне Javascript (PHP SDK автоматически определяет, был ли пользователь зарегистрирован через JavaScript).

1

Моя проблема заключается в том, что после того, как войти в систему с FB, страница показывает ссылку на выхода из системы, которая когда щелчок, необходимо войти их (и, следовательно, показать на ссылку Войти снова) НО это не работает.

Эта причина, по которой на вашем сайте невозможно очистить сессию fb. У меня такая же проблема, когда вы используете facebook api в фреймворке cakephp. И ... Я пытаюсь очистить сеанс при выходе пользователя из системы (мне это не нравится).
Я отлаживаю и вижу, что когда учетная запись учетной записи facebook прошла успешно, $this->facebook->user() не имеет значения null и не выбрасывает исключение.

+0

Да, звучит одна и та же проблема. Мне просто удалось очистить сессию FB, но это испортило логин! –

+0

@Mr Pablo: совсем не та же проблема. Как вы помните, вы ** можете ** выполнять дополнительные запросы api, что просто невозможно – zerkms

+0

@MrPablo Я не знаю об аутентификации кода Igniter. В cakephp я разрешаю логин пользователя с user_id и facebook_id (только что запрошен из API facebook)
NamLe

0

Для того чтобы работать, вы должны иметь активный токен доступа пользователя, добавленный к ссылке выхода.

см: https://developers.facebook.com/docs/reference/php/facebook-getLogoutUrl/

Например:

if ($user) { 
    $params = array (
    access_token => ''.$access_token.'', 
); 
    $logoutUrl = $facebook->getLogoutUrl($params); 
} else { 
$params = array(
    scope => 'read_stream,publish_stream,publish_actions,read_friendlists', 
    //redirect_uri => $url 
); 
    $loginUrl = $facebook->getLoginUrl($params); 
}; 
Смежные вопросы