проблема с Facebook - PullRequest
       4

проблема с Facebook

0 голосов
/ 24 августа 2010

У меня есть приложение Facebook iframe facebook.В верхней части каждой страницы я запускаю скрипт аутентификации из включенного примера php.Однако по какой-то причине, если я войду в одну учетную запись Facebook, получу доступ к своему приложению, выйду из Facebook и войду в новую учетную запись, когда я посещаю приложение, я все еще аутентифицируюсь как первый пользователь.

Как проходит сеанссуществует?Почему библиотека Facebook не понимает, что она недействительна?

, пожалуйста, помогите.

Вот мой скрипт аутентификации, который я включаю в верхней части каждой страницы.Это почти идентично примеру.Единственное изменение заключается в том, что я добавил строку для передачи параметра GET через URL-адрес входа в систему.

 $uid = null; //facebook user id

  require_once "facebook.php";

    // Create our Application instance.
    $facebook = new Facebook(array(
      'appId'  => $conf['fb']['appid'],
      'secret' => $conf['fb']['secret'],
      'cookie' => true,
    ));



    if (is_numeric($_GET['user_id'])) {$user['id'] = $_GET['user_id']; $loginUrlParam = '?user_id='.$_GET['user_id'];}

    //Facebook Authentication part
    $session = $facebook->getSession();
    $loginUrl = $facebook->getLoginUrl(
            array(
            'canvas'    => 1,
            'fbconnect' => 0,
            'req_perms' => 'publish_stream',
            'next' => $conf['dir']['app_url'].$loginUrlParam
            )
    );

    $fbme = null;

    if ($session) {
        try {
            $uid      =   $facebook->getUser();
            $fbme     =   $facebook->api('/me');

        } catch (FacebookApiException $e) {
            echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
            exit;
        }
    }


    print_r($fbme);

Обновление:

Просто нашел что-то очень странное.Я могу войти в Facebook в двух браузерах.В прошлом я знал, что если я войду в один из одного браузера, он выйдет из другого.Есть проблема с атм facebook?

1 Ответ

1 голос
/ 24 августа 2010

Ваша проблема на самом деле является комбинацией проблем

Прежде всего, у вас включена поддержка файлов cookie для вашего экземпляра класса Facebook.Это заставляет Facebook::getSession() искать сеанс в файле cookie, если сеанс не предоставлен в $_REQUEST.

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

Помните, что выход из Facebook не сделает ничего, чтобы удалить / удалить сеансовые куки в вашем домен.

У вас есть несколько способов обойти это.Если вы хотите оставить поддержку куки-файлов включенной, вам необходимо убедиться, что вы правильно сбросили этот куки-файл, когда неопознанный пользователь посещает приложение.Это то, что вам нужно сделать при новой загрузке страницы холста, а не то, что включено в каждую страницу вашего приложения.

$facebook = new Facebook(array(
  'appId'  => $conf['fb']['appid'],
  'secret' => $conf['fb']['secret'],
  'cookie' => true,
));

// Calling this w/no parameters will clear the session
$facebook->setSession();

Вы также можете просто отключить поддержку файлов cookie, но затемнеобходимо вручную поддерживать идентификатор сеанса и данные сеанса в Facebook.

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