web-dev-qa-db-fra.com

Obtenez une image en taille réelle de l'API graphique de Facebook

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?

8
Simon Knittel

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".

13
luschn

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);
});
0
turdus-merula