J'utilise le point final graphique api /PAGE_ID/posts
pour obtenir tous les messages d'une page facebook. Maintenant, je veux l'image en taille réelle de ces messages. La propriété picture des objets renvoyés ne me donne qu'une version recadrée de cette image.
Avec l'identifiant d'objet de ces publications et le point de terminaison de l'API /OBJECT_ID/picture
, je ne dispose que de la version petite, normale et de la taille d'un album. Mais avec une petite modification de l'URL, j'ai réussi à obtenir l'image en taille réelle.
Exemple
Cette URL:
https://graph.facebook.com/10152843929471041/picture
redirige vers cette URL:
https://fbcdn-sphotos-b-a.akamaihd.net/hphotos-ak-xpa1/t31.0-8/s720x720/10838228_10152843929471041_5251228402651650719_n.jpg
J'ai supprimé le 720x720
de cette URL pour obtenir cette URL:
https://fbcdn-sphotos-b-a.akamaihd.net/hphotos-ak-xpa1/t31.0-8/s/10838228_10152843929471041_5251228402651650719_n.jpg
qui est enfin l'image en taille réelle.
Je pense que je peux réaliser cette modification avec un motif regex. Mais maintenant, ma question est de savoir comment obtenir l'URL après la redirection à partir de l'URL d'origine (la première).
Des idées ou des solutions plus simples?
Voici comment obtenir des images plus grandes:
/OBJECT-ID/picture?width=500&height=500
Ou:
/OBJECT-ID/picture?type=large
Consultez également la réponse dans ce fil de discussion: Facebook Graph API: obtenez des images plus grandes en une requête
Edit: Comme cela ne semble pas fonctionner avec les ID d'objet, vous pouvez simplement récupérer l'image à partir de cette réponse:
https://graph.facebook.com/10152843929471041
Cherchez le tableau "images".
On peut également demander la collection images
d'un objet photo
, puis rechercher l'entrée entrée ayant la plus haute résolution .
Voir documentation . Code:
MyFacebookWrapper.getBestImage = function(photoId) {
var deferred = new $.Deferred();
var params = { fields: "images" };
FB.api("/" + photoId, "get", params,
function (response) {
console.log("MyFacebookWrapper.getBestImage, response:");
console.log(response);
var images = _.sortBy(response.images, 'width');
var best = _.last(images)
deferred.resolve(best);
}
);
return deferred.promise();
};
Usage:
MyFacebookWrapper.getBestImage("photo Id ...").then(function(image) {
console.log(image);
});