Ошибка FQL 102 Требуется сеанс пользователя при повторном запросе
У меня полнофункциональный FQL-запрос, но когда он запускается во второй раз, я получаю код ошибки 102: требуется сеанс пользователя
В моем приложении у меня есть автозаполнение поиска друзей. Я использую автозаполнение JQuery UI с динамическим источником с использованием AJAX.
Это моя функция PHP:
function fb_buscarAmigosAutocomplete($term='',$app_user=false){
$facebook = new Facebook(array(
'appId' => APP_ID,
'secret'=> APP_SECRET
));
$term=trim(strtolower($term));
//Buscar usuarios
try{
$fql = " SELECT uid,name,first_name,last_name,pic_square
FROM user
WHERE uid IN (
SELECT uid2
FROM friend
WHERE uid1=me()
)
AND strpos(lower(name),'".$term."') >=0
";
if($app_user)
$fql .= " AND is_app_user";
$fql .= " LIMIT 5";
$param = array(
'method' => 'fql.query',
'query' => $fql,
'callback' => ''
);
$result = $facebook->api($param);
} catch(FacebookApiException $e){
$error=$e->getMessage();
var_dump($e);
}
if(!empty($result)) {
$return['amigos']=$result;
$return['valido']=true;
}else
$return['valido']=false;
return $return;
}
Странно то, что последние 2-3 недели все работало нормально, и вдруг это прекратилось. Даже «страннее», он все еще работает при первом срабатывании, но не во второй раз. Так как это асинхронно, я не понимаю, какая разница, если это первый, второй, третий, четвертый раз, когда он срабатывает ..
Есть идеи?
Редактировать 1 С дальнейшими исследованиями я думаю, что я нашел обходной путь. Это может быть потому, что сообщается об ошибкеВот ответилаВот
Мой обходной путь состоял в том, чтобы поймать первый access_token, который я получаю с Object Facebook, а затем прикрепить его к каждому экземпляру класса, что-то вроде этого
Первое соединение:
$facebook = new Facebook(array(
'appId' => APP_ID,
'secret'=> APP_SECRET
));
$uid = $facebook->getUser();
if($uid){
$_SESSION['access_token']=$facebook->getAccessToken();
}
Любое другое использование API:
$facebook = new Facebook(array(
'appId' => APP_ID,
'secret'=> APP_SECRET
));
$facebook->setAccessToken($_SESSION['access_token']);
try{
$user_info = $facebook->api('/'.$uid.'?fields=id,name,first_name,last_name,email,picture');
} catch(FacebookApiException $e){
$error = $e->getMessage();
}
Пока это решило проблему
Редактировать 2
это не так ... иногда мой токен доступа является допустимой буквенно-цифровой строкой +100 символов, и в те времена он работал.
Иногда это строка только из 48 чисел, и это не ... я действительно застрял здесь