webentwicklung-frage-antwort-db.com.de

Erhalten Sie ein Bild in voller Größe von der Facebook Graph API

Ich verwende den grafischen API-Endpunkt /PAGE_ID/posts, um alle Beiträge von einer Facebook-Seite zu erhalten. Nun möchte ich das Bild in voller Größe von diesen Beiträgen. Die Picture-Eigenschaft der zurückgegebenen Objekte gibt mir nur eine abgeschnittene Version dieses Bildes.

Mit der Objekt-ID aus diesen Beiträgen und dem API-Endpunkt /OBJECT_ID/picture bekomme ich nur die kleine, normale und albumgroße Version des Bildes. Mit einer kleinen Änderung der URL konnte ich jedoch das Bild in voller Größe erhalten.

Beispiel

Diese URL:
https://graph.facebook.com/10152843929471041/picture

weiterleitungen zu dieser URL:
https://fbcdn-sphotos-b-a.akamaihd.net/hphotos-ak-xpa1/t31.0-8/s720x720/10838228_10152843929471041_525122840265719_n.jpg

Ich habe den 720x720 von dieser URL entfernt, um diese URL zu erhalten:
https://fbcdn-sphotos-b-a.akamaihd.net/hphotos-ak-xpa1/t31.0-8/s/10838228_10152843929471041_5251228402651650719_n.jpg

das ist schließlich das Bild in voller Größe.

Ich denke, dass ich diese Änderung mit einem Regex-Muster erreichen kann. Aber jetzt ist meine Frage, wie ich die URL nach der Weiterleitung von der ursprünglichen URL (der ersten) erhalten kann.

Irgendwelche Ideen oder einfachere Lösungen?

8
Simon Knittel

So erhalten Sie größere Bilder:

/OBJECT-ID/picture?width=500&height=500

Oder:

/OBJECT-ID/picture?type=large

Sehen Sie sich auch die Antwort in diesem Thread an: Facebook Graph API: Größere Bilder in einer Anfrage erhalten

Bearbeiten: Da dies scheinbar nicht mit Objekt-IDs funktioniert, können Sie das Bild einfach aus dieser Antwort herausholen:

https://graph.facebook.com/10152843929471041

Achten Sie auf das Array "images".

13
luschn

Sie können auch die images-Sammlung eines photo-Objekts anfordern und dann nach dem Eintrag mit der höchsten Auflösung suchen.

Siehe Dokumentation . 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();
};

Verwendungszweck:

MyFacebookWrapper.getBestImage("photo Id ...").then(function(image) {
    console.log(image);
});
0
turdus-merula