FQL-Fehler 102 Erfordert Benutzersitzung bei wiederholter Abfrage
Ich habe eine voll funktionsfähige FQL-Abfrage, aber wenn sie zum zweiten Mal ausgelöst wird, erhalte ich den Fehlercode 102: Benutzersitzung erforderlich
Auf meiner App habe ich eine Autocomplete-Suche nach Freunden. Ich benutze JQuery UI Autocomplete mit einer dynamischen Quelle mit AJAX.
Das ist meine PHP-Funktion:
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;
}
Das Seltsame ist, dass dies in den letzten 2-3 Wochen gut funktioniert hat und plötzlich aufgehört hat. Sogar "weirder" funktioniert es immer noch, wenn es zum ersten Mal ausgelöst wird, aber nicht beim zweiten Mal. Da dies asynchron ist, verstehe ich nicht, welchen Unterschied es macht, wenn es das erste, zweite, dritte, vierte Mal ausgelöst wird.
Irgendwelche Ideen?
Bearbeiten 1 Ich glaube, ich habe mit weiteren Nachforschungen einen Workaround gefunden. Dies kann daran liegen, dass ein Fehler gemeldet wurdeHier ans verworfenHier
Meine Problemumgehung bestand darin, das erste access_token abzufangen, das ich mit dem Objekt Facebook erhalte, und es dann an jede einzelne Instanz der Klasse anzuhängen, etwa so
Erste verbindung:
$facebook = new Facebook(array(
'appId' => APP_ID,
'secret'=> APP_SECRET
));
$uid = $facebook->getUser();
if($uid){
$_SESSION['access_token']=$facebook->getAccessToken();
}
Jede andere Verwendung der 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();
}
Bisher hat es das Problem gelöst
Bearbeiten 2
es hat nicht funktioniert ... manchmal ist mein Zugriffstoken eine gültige alphanumerische Zeichenfolge mit +100 Zeichen, und wenn es funktioniert.
Manchmal handelt es sich nur um eine 48-stellige Zeichenfolge, und das tut es nicht. Ich stecke hier wirklich fest