2012-12-27 10 views
0

J'ai eu une requête fql dans mon code qui jusqu'à la semaine dernière (ou à peu près) a fonctionné parfaitement et puis soudainement cessé de fonctionner.FQL erreur 803 apparaît soudainement

Je reçois maintenant une erreur bizarre # 803 avec le message "Certains des alias que vous avez demandés n'existent pas:" ce qui est particulier (et je crois être un hareng rouge total) puisque j'ai maintenant essayé d'enlever TOUS mes alias précédents et les remplaçant par juste "nom". Totalement à bout de nerfs, essayant de comprendre ce que Facebook a changé au cours des deux dernières semaines. Si quelqu'un a un aperçu je serais vraiment reconnaissant de l'entendre.

Je poste mon code ici, mais je ne m'attends pas à des commentaires sur le code lui-même vu comment cela a fonctionné parfaitement pendant plusieurs mois jusqu'à un certain point au cours des deux dernières semaines.

L'intention spécifique du code était de récupérer un jeton d'authentification pour l'utilisateur, puis de récupérer des informations plus détaillées qui ne sont pas disponibles dans la requête/me.

//I call this first to get the token 

       function checkStatus() {  
      try{ 

       FB.getLoginStatus(function(loginResponse){ 
        if(loginResponse.status == "connected"){ 
         authToken = loginResponse.authResponse.accessToken;//this comes back as expected 
         expiresIn = loginResponse.authResponse.expiresIn;//this comes back as expected 
         getUserInfo(); 
        } else { 
         registerApp();//this gets called if the user hasn't approved the app yet... this continues to work as expected 
        } 
       }); 

      } 
      catch(e){ 
       alert("ERROR" + e); 
      } 
     } 



//so the above method calls this 


       function getUserInfo(){ 
      FB.api("/me", function(meResponse){ 

       meResponse.authToken = authToken; 
       meResponse.expiresIn = expiresIn;   
       console.log("meResponse = " + JSON.stringify(meResponse)); 
//this contains all the correct expected data 

       FB.api(escape("/fql&q=SELECT name FROM user WHERE uid = '"+ meResponse.id +"'"),//here I've eliminated ALL extra aliases (though none of them were a problem before 
        function(response){ 
         console.log("RESP = " + JSON.stringify(response)); //this comes back with the following error: 
//{"error":{"message":"(#803) Some of the aliases you requested do not exist: fql&q=SELECT name FROM user WHERE uid = 'xxxxxxxxx'","type":"OAuthException","code":803}} 

        } 
       )    
      }); 

     } 

Répondre

0

Alors ... il semblerait que FB juste totalement modifié la syntaxe de la façon dont fqï doit être appelé, et je ne voyais pas référence à l'ancienne que j'ai ci-dessus (qui a travaillé TOTALEMENT).

La nouvelle façon est de passer dans un objet JSON qui ressemble à ceci:

{method:'fql.query',       query: "SELECT uid,name,email,first_name,last_name,birthday_date,pic_big FROM user WHERE uid = '"+ meResponse.id +"'"} 

et la réponse est NON PLUS arrière comme un tableau appelé données, et est maintenant un tableau sans nom brut au niveau supérieur de l'objet retourné ... donc dans mon exemple ci-dessus, je regarde maintenant la réponse [0] par opposition à response.data [0].

Je ne vois aucune mention de l'un de ces changements dans leur documentation ... peut-être que je perds la tête, mais on dirait qu'ils ont complètement modifié leur API sans avertissement.

Peut-être qu'il me manque quelque chose (je suis habituellement).

Juste au cas où quelqu'un d'autre a besoin d'aide pour cela ... voici un exemple du code de travail nouvellement ...

FB.api(
        {method:'fql.query', 
         query: "SELECT uid,name,email,first_name,last_name,birthday_date,pic_big FROM user WHERE uid = '"+ meResponse.id +"'"}, 
       function(response){ 
        console.log("RESP = " + JSON.stringify(response)); 
        //all the data for this specific user is now in response[0], obviously if your search criteria contains more users, they'll be in the subsequent indexed items under the response array.            
       } 
      ) 
Questions connexes