2013-02-24 8 views
9

Sto cercando di fare una richiesta di "post" per https://graph.facebook.com/ "+ userID +"/foto? access_token = "+ access tokenCaricamento Facebook grafico API tramite Javascript/PhoneGap

con il 'url' paramter essere . un data base 64 URI

ho ottenuto l'errore "di dati: base64 .... è un URL interal, ma si tratta di una richiesta esterna"

+0

Ho cercato anche questo. La cosa più vicina che riesco a capire è di salvare temporaneamente l'immagine sul tuo server, servire l'immagine a un album, e quindi eliminare la foto, poiché, una volta che l'immagine è su Facebook, l'immagine di origine non è più necessaria. In attesa di ciò che gli altri trovano, però. –

+0

Questo ha funzionato per me: http://facebook.stackoverflow.com/a/16439233/1472477 –

risposta

-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

so il dolore di non essere in grado di caricare. una singola foto. Dopo notti insonni e giorni di ricerca, finalmente ho potuto lavorare con il file cordova- Trasferimento plug

questa soluzione non richiede il supporto Uint8Array o Blobs;)

innanzitutto aggiungere il plugin: cordova plugin add org.apache.cordova.file-transfer

Quindi, utilizzare questo codice (si noti che sto usando angular.js. O non usare promesse o usare una libreria come rsvp o Q per fare le tue promesse):

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