Сбой запроса Facebook в PHP - проблемы с токеном доступа - PullRequest
3 голосов
/ 18 ноября 2011

Я играю с FQL в приложении Facebook iFrame. Я только недавно начал получать периодически возникающую ошибку, когда я пытаюсь выполнить простой FQL-запрос, например получить массив друзей пользователя ... Я получаю следующее сообщение об ошибке:

Неустранимая ошибка: необработанное исключение: 102: требуется пользовательский сеанс, добавленный в строку base_facebook.php 1039

Единственное, что кажется, чтобы очистить это сообщение, это очистить все мои куки. Простой выход из системы и вход в Facebook не останавливает ее. Огорчает то, что я не могу повторить ошибку по требованию, из-за которой трудно отследить, что происходит, но при просмотре этой строки на base_facebook.php создается впечатление, что исключение было выдано, потому что токен доступа больше не действителен

Как мне это объяснить? Т.е. как я могу проверить, действителен ли токен доступа, и если нет, запросить / установить новый? Я использую последнюю версию Facebook PHP SDK v3 с платформой CodeIgniter.

Был похожий вопрос, но он относился к более ранней версии SDK, поэтому больше не действителен.

РЕДАКТИРОВАТЬ: пробовал несколько других вещей ... Поскольку страница индекса обнаруживает, что пользователь вошел в систему, он не перенаправляет на ссылку oauth (т.е. https://www.facebook.com/dialog/oauth?client_id-etc.). В качестве теста я попытался разместить эту ссылку в любом случае на странице, чтобы попытаться нажать и вызвать новую аутентификацию. Это тоже не сработало. Я попытался установить токен доступа на нуль, а затем получить новый. Также не повезло. Единственное исправление - это очистить все куки в браузер.

Любые ссылки на информацию / советы по отладке / решениям и т. Д., Как всегда, приветствуются!

Вот схема кода:

public function index()
{
    $this->load->library('facebook'); 

    // check if we can retrieve user id from facebook -    

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

    if (!$user) 

    { // if no user id there then redirect to Facebook login page 

         $this->loginByFacebook();   
    } 
    else // if we have id then we have a logged in FB user
    {                           

      $fb_uid = $user;
      $fb_usr = $this->facebook->api('/me');

      print_r($fb_usr); // This always works and outputs my FB info

     // HERE I PUT A LINK TO NEW PAGE WHICH IS CREATED WITH FUNCTION BELOW

}

function getFriendsList () {

    //echo "here";
    $this->load->library('facebook'); 
    //$access_token = $this->facebook->getaccessToken(); 
    $query = '
        SELECT first_name, last_name, name, uid,pic_square FROM user
        WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=me() ) 
        ORDER BY name';


         // I have tried running the query by getting access token and supplying it and without and still have the same problem.

    //$FQL = array ( "method" => "fql.query", "query" => $query, "access_token" => $access_token);
        $FQL = array ( "method" => "fql.query", "query" => $query);

    $data = $this->facebook->api($FQL);     

    return $data;           

}

Ответы [ 3 ]

1 голос
/ 24 ноября 2011

Я собираюсь закрыть это, так как после выполнения еще нескольких тестов я не могу воспроизвести поведение последовательно. Кажется, возникает ошибка при использовании Chrome на Mac, но не в других браузерах и не так далеко в Chrome на ПК. Еще один тест, который я провел, состоял в том, чтобы зайти в настройки Chrome и удалить куки только с facebook.com, но это не помогло. Только очистка всех файлов cookie поможет решить проблему.

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

0 голосов
/ 13 марта 2014

У меня тоже есть эта ошибка. Я решил это временно. Просто удалите приложения на своей странице, а затем снова войдите в систему. Это должно работать нормально. Но это не постоянное решение. Чтобы удалить приложения,

настройки -> приложения -> нажмите кнопку x в соответствующих приложениях.

0 голосов
/ 13 января 2013

Это появилось в моем приложении после того, как я добавил access_token в свой fql-запрос.я удалил это снова, и ошибка осталась.моя проблема кажется, что я вызвал функцию без предварительной аутентификации (логин-URL).как-то это сработало потом.надеюсь, это поможет.

...