11 votes

Téléchargement d'une image base64 sur l'API graphique de Facebook via Javascript/Phonegap

Je suis en train de faire une requête "post" vers https://graph.facebook.com/"+userID+"/photos?access_token="+accessToken

avec le paramètre 'url' étant un URI de données base64

J'ai reçu l'erreur "data:base64.... est une URL interne mais c'est une requête externe".

0voto

Boyan Hristov Points 1007

Je connais la douleur de ne pas pouvoir télécharger une seule photo. Après des nuits blanches et des jours de recherche, j'ai enfin réussi à le faire fonctionner avec le plugin de transfert de fichiers cordova

Cette solution NE nécessite PAS de support Uint8Array ou Blobs ;)

Ajoutez d'abord le plugin: cordova plugin add org.apache.cordova.file-transfer

Ensuite, utilisez ce code (Notez que j'utilise angular.js. N'utilisez pas de promises ou utilisez une bibliothèque comme rsvp ou Q pour faire vos promises):

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 = 'nom_de_la_photo_' + Math.round((+(new Date()) + Math.random()));
    options.mimeType = "image/jpg";

    var params = new Object();
    params.access_token = "votre jeton d'accès facebook ;)";
    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;
}

-1voto

Richie Fredicson Points 596
 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('Une erreur est survenue');
             } else {
                 alert('Image postée sur Facebook');
             }

         });
       } else {

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

        },
        error:function(){

        }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X