как остановить facebook sdk от возврата uid в $ facebook-> getUser () - PullRequest
0 голосов
/ 18 декабря 2011

, поэтому я пытаюсь запрограммировать функцию выхода из системы Facebook для моего сайта.

Дело в том, что вместо кнопки выхода из системы Facebook пользователь выходит с сайта Facebook, а не с моего сайта

поэтому моя текущая логика заключается в том, что при нажатии кнопки выхода из системы она вызывает функцию выхода из моего приложения, и сеанс очищается и т. д.

, но тогда у меня также есть логика в другом месте, в которой, если $ facebook-> getUser () возвращаетправильно, извлеките информацию о пользователе из БД и установите его как зарегистрированного в

. Есть ли способ предотвратить возврат $ facebook-> getUser () верным идентификатором пользователя?

То есть, когда пользователь нажимает на выход из системы, он не должен выходить из реального веб-сайта facebook, но также $ facebook-> getUser () также не должен возвращать правильный идентификатор, чтобы он не былавтоматически перезагружен снова

Ответы [ 2 ]

0 голосов
/ 18 декабря 2011

При работе с 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
0 голосов
/ 18 декабря 2011

откуда фейсбук знает, что пользователь вышел из вашего сайта? поместите флаг в локальную базу данных , указывая, что пользователь вышел из системы. проверьте это после $ facebook-> getUser ().

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