2013-02-24 3 views
9

ich eine "post" Anfrage an https://graph.facebook.com/ "+ userID +"/Fotos zu machen bin versucht? Access_token = "+ accessTokenHochladen base64 Bild auf Facebook Graph API via Javascript/Phonegap

mit dem 'url' Paramter zu sein a. base64 Daten URI

ich den Fehler bekam „Daten: base64 .... ist ein interal URL, aber dies ist eine externe Anforderung“

+0

Ich habe auch danach gesucht. Die nächste Sache, die ich herausfinden kann, ist, das Bild vorübergehend auf deinem Server zu speichern, das Bild zu einem Album zu liefern und dann das Foto zu löschen, da, sobald das Bild auf Facebook ist, das Quellbild nicht länger notwendig ist. Ich freue mich aber darauf, was andere finden. –

+0

Dieser arbeitete für mich: http://facebook.stackoverflow.com/a/16439233/1472477 –

Antwort

-1
<script src='http://connect.facebook.net/en_US/all.js'></script> 
FB.init({appId: "ur ap id of fb", status: true, cookie: true}); 
FB.login(function(response) { 
     if (response.authResponse) { 
     var access_token = FB.getAuthResponse()['accessToken']; 
     FB.api('me/photos', 'post', { 
      message: 'posted by xxxx', 
      status: 'success', 
      access_token: access_token, 
      url: 'test.png' 
     }, function (response) { 

      if (!response || response.error) { 
       alert('Error occured'); 
      } else { 
       alert('Image Posted On Facebook'); 
      } 

     }); 
     } else { 

     } 
    }, {scope: 'user_photos,photo_upload,publish_stream,offline_access'}); 

     }, 
     error:function(){ 

     } 
0

ich kenne den Schmerz nicht hochladen zu können. ein einziges Foto Nach schlaflosen Nächten und Tagen der Forschung, habe ich es endlich mit der Cordova-Datei Transfer-Plugin

Diese Lösung Uint8Array oder Blobs Unterstützung nicht erfordert;)

Fügen Sie zunächst das Plugin: cordova plugin add org.apache.cordova.file-transfer

Dann diesen Code verwenden (Beachten Sie, dass ich Angularjs verwende. Entweder verwende keine Versprechungen oder verwende eine Bibliothek wie rsvp oder Q, um deine Versprechen zu halten):

function postImage(fileURI, message) { 

    var deferred = $q.defer(); 

    var win = function (r) { 

     deferred.resolve(r); 
    } 

    var fail = function (error) { 

     deferred.reject(error); 
    } 

    var options = new FileUploadOptions(); 
    options.fileKey = "file"; 
    options.fileName = 'name_of_photo_' + Math.round((+(new Date()) + Math.random())); 
    options.mimeType = "image/jpg"; 

    var params = new Object(); 
    params.access_token = "your facebook access token ;)"; 
    params.message = message; 
    params.no_story = false; 

    options.params = params; 

    var ft = new FileTransfer(); 
    ft.upload(fileURI, "https://graph.facebook.com/v2.0/me/photos", win, fail, options); 

    return deferred.promise; 
}