Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Facebook Graph API - upload photo using JavaScript

Is it possible to upload a file using the Facebook Graph API using javascript, I feel like I'm close. I'm using the following JavaScript

var params = {}; params['message'] = 'PicRolled'; params['source'] = '@'+path; params['access_token'] = access_token; params['upload file'] = true;  function saveImage() {     FB.api('/me/photos', 'post', params, function(response) {         if (!response || response.error) {             alert(response);         } else {             alert('Published to stream - you might want to delete it now!');         }     });  } 

Upon running this I receive the following error...

"OAuthException" - "(#324) Requires upload file" 

When I try and research this method all I can find out about is a php method that apears to solve this

$facebook->setFileUploadSupport(true); 

However, I am using JavaScript, it looks like this method might be to do with Facebook Graph permissions, but I already have set the permissions user_photos and publish_stream, which I believed are the only ones I should need to perform this operation.

I have seen a couple of unanswered questions regarding this on stackoverflow, hopefully I can explained myself enough. Thanks guys.

like image 846
Moz Avatar asked Feb 15 '11 01:02

Moz


1 Answers

Yes, this is possible, i find 2 solutions how to do that and they are very similar to each other, u need just define url parameter to external image url

FIRST one using Javascript SDk:

var imgURL="http://farm4.staticflickr.com/3332/3451193407_b7f047f4b4_o.jpg";//change with your external photo url FB.api('/album_id/photos', 'post', {     message:'photo description',     url:imgURL         }, function(response){      if (!response || response.error) {         alert('Error occured');     } else {         alert('Post ID: ' + response.id);     }  }); 

and SECOND one using jQuery Post request and FormData:

 var postMSG="Your message";  var url='https://graph.facebook.com/albumID/photos?access_token='+accessToken+"&message="+postMSG;  var imgURL="http://farm4.staticflickr.com/3332/3451193407_b7f047f4b4_o.jpg";//change with your external photo url  var formData = new FormData();  formData.append("url",imgURL);    $.ajax({                     url: url,                     data: formData,                     cache: false,                     contentType: false,                     processData: false,                     type: 'POST',                      success: function(data){                         alert("POST SUCCESSFUL");                     }                 }); 
like image 64
Volodymyr Dvornyk Avatar answered Sep 30 '22 18:09

Volodymyr Dvornyk