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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage