2013-02-18 14 views
7

Im cercando di inviare richiesta in batch per rappresentare graficamente api, e ottenere l'errore nella risposta per la seconda richiesta:utilizzando facebook richiesta lotto API JavaScript

"{ 
    "error": { 
     "message": "(#100) Missing message or attachment", 
     "type": "OAuthException", 
     "code": 100 
    } 
}" 

Qualcuno può dirmi che cosa sto facendo di sbagliato?

ecco il codice che uso:

var opts = { 
       message : 'Some message', 
       name : 'Post Name', 
       link : 'url', 
       description : 'The post Description', 
       picture : 'url to image' 
      }; 

FB.api('/', 'POST', { 
     batch: [ 
       { method: 'GET', relative_url: 'me/friends'}, 
       { method: "POST",relative_url: "me/feed", body : opts } 
     ] 
     }, function (response) { 
       console.log(response); 
     }); 
+0

Penso che sia necessario autenticare la richiesta in qualche modo quando si utilizza/accede a determinate parti dell'API grafico FB. OAuthException sembra indicare un errore di autorizzazione. – kjetilh

+0

La prima richiesta va bene senza errori, la seconda richiesta ottiene l'errore ... anche se lo faccio in una richiesta API separata, funziona FB.api ('/ me/feed', 'post', opts, function (risposta) { if (risposta || response.error) {} altro {} !}); –

+0

Trovato il problema e la soluzione: campo del corpo. Questo dovrebbe essere formattato come una stringa di corpo POST HTTP raw, simile a una stringa di query URL https://github.com/jgorset/facepy/issues/55 –

risposta

12

Come Sharon ha detto, è necessario mettere il campo corpo in un modo URL codificato.

Si può fare semplice con jQuery, come:

var opts = { 
       message : 'Some message', 
       name : 'Post Name', 
       link : 'url', 
       description : 'The post Description', 
       picture : 'url to image' 
      }; 

FB.api('/', 'POST', { 
     batch: [ 
       { method: 'GET', relative_url: 'me/friends'}, 
       { method: "POST",relative_url: "me/feed", body : $.param(opts) } 
     ] 
     }, function (response) { 
       console.log(response); 
     }); 

Opere buona.

Problemi correlati