2013-02-18 5 views
7

Im Versuch Batch-Anfrage zu senden api graphisch darzustellen, und in der Antwort für die zweite Anforderung immer Fehler:mit Facebook-Batch-Anfrage JavaScript-API

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

Kann mir jemand sagen, was mache ich falsch? Hier

ist der Code, den ich verwenden:

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

Ich denke, Sie müssen Ihre Anfrage in irgendeiner Weise authentifizieren, wenn Sie bestimmte Teile der FB Graph API verwenden/darauf zugreifen. OAuthException scheint auf einen Autorisierungsfehler hinzuweisen. – kjetilh

+0

Die erste Anfrage geht gut ohne Fehler, die zweite Anfrage bekommt den Fehler ..ow auch wenn ich es in separaten API-Anfrage, funktioniert es FB.api ('/ me/feed', 'post', opts, Funktion (Antwort) { if (Antwort || response.error) { } sonst { } !}); –

+0

Gefunden das Problem und die Lösung: Körperfeld. Dies sollte als eine unformatierte HTTP-POST-Textzeichenfolge formatiert werden, ähnlich einer URL-Abfragezeichenfolge https://github.com/jgorset/facepy/issues/55 –

Antwort

12

wie Sharon sagte, müssen Sie das Körperfeld in einer URL codiert Weg zu bringen.

Sie können es mit jquery einfach tun, wie:

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); 
     }); 

gute Werke.