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