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?
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".
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);
});