Я играю с 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;
}