2012-08-16 9 views
7

Laut Facebook Graph API-Dokumentation (here) können Sie verschiedene Größen eines Benutzers Profilbild URLs zugreifen, wie:Facebook Graph API Änderung: Bildtyp (Größe) funktioniert nicht mehr?

https://graph.facebook.com/(userid)/picture?type=small 
https://graph.facebook.com/(userid)/picture?type=large 

Sie werden bemerken, dass die ersten Entschlüssen zu einer URL in _t.jpg Endung (das kleine Thumbnail) und das zweite Ende in _n.jpg (das große Bild). So weit, ist es gut. Gleichwertig, sollten wir für diese Bilder wie diese zur Abfrage der Lage sein:

https://graph.facebook.com/(userid)?fields=picture&type=small 
https://graph.facebook.com/(userid)?fields=picture&type=large 

Dieses letztere Format wie für viele Monate erwartet gearbeitet, bis vor wenigen Tagen, als plötzlich begann es ganz den „Typ“ Parameter zu ignorieren - alles Jetzt wird ein Bild aufgelöst, das auf _q.jpg endet. Dies ist der Standardwert, wenn kein "Typ" angegeben ist. Als Ergebnis kann ich nicht mehr herausfinden, wie ich das große Bild in PHP abfragen kann (mein echtes Problem). Es funktioniert wie folgt:

$pic = $facebook->api('/me', array('fields' => 'picture', 'type' => 'large')); 

... aber wie oben beschrieben, hat "Typ" spontan begonnen ignoriert zu werden. Ich habe mehrere Stunden damit verbracht, ihre Dokumentation zu durchsuchen, konnte aber keinen Hinweis darauf finden, was sich geändert hat, oder die "neue" Art und Weise, wie dies getan werden sollte - alle Zeiger würden sehr geschätzt werden ...

EDIT :

keine der folgenden Arbeit, entweder (gibt nichts):

$pic = $facebook->api('/me/picture', array('type' => 'large')); 
$pic = $facebook->api('/(my_uid)/picture', array('type' => 'large')); 
$pic = $facebook->api('/me/picture/?type=large'); 
$pic = $facebook->api('/(my_uid)/picture/?type=large'); 

Grundsätzlich, da Facebook Dinge brach vor ein paar Tagen ein nicht standardmäßiges zu bekommen scheint es keine Möglichkeit, zu sein Bildgröße von PHP. Sie können einige der Aufrufe selbst aus dem Graph API Explorer (here) ausprobieren.

Andere verwandte/relevante Links:

http://stackoverflow.com/questions/2978761/facebook-graph-api-will-not-give-me-picture-data 
http://stackoverflow.com/questions/7718704/requesting-picture-for-event 
+0

Es sei denn, es ist ein sporadischer ist Problem nicht alle Benutzer/Objekte betreffen, scheint es jetzt für mich gut zu funktionieren. Vielleicht ist es behoben? – DanH

Antwort

3

fand ich eine Abhilfe - Bilder von verschiedenen Größen Profil kann noch über eine FQL Abfrage zugegriffen werden:

$pic = $facebook->api(array('method'=>'fql.query', 'query'=>"SELECT pic_big FROM user WHERE uid=$fb_uid")); 

("pic_big" entspricht "type = large" - siehe here).

Das erklärt immer noch nicht, warum der GRAPH-Aufruf plötzlich kaputtgegangen ist, oder warum Bildgrößen überhaupt nicht mehr über Graphen zugänglich sind (was ich noch wissen möchte) ... aber zumindest Es gibt einige Weg, um die anderen Größe Fotos zu bekommen.

Gotta love Facebook und ihre erstklassige Zuverlässigkeit ...

+1

Haben Sie eine Idee, das Gleiche für Post-Attached-Bilder zu tun? –

4

Wie in this bug auf Facebook beschrieben, können Sie diese über die neue API anfordern „field expansion“ Syntax.

Dies funktioniert für mich:

https://graph.facebook.com/____OBJECT_ID____?fields=picture.type(large) 
+3

Ich verachte wirklich, wie Facebook "nur" Dinge ändert/bricht, ohne sich darum zu kümmern, sie in ihren Dokumenten zu erwähnen. Wie auch immer, danke für den Tipp - sieht aus wie beide Workarounds funktionieren :) – Metal450

+0

Scheint immer das exakt gleiche Bild zurückzugeben, egal ob du groß, mittel, klein usw. eingibst. Ich kann eine Liste von Gegenständen bekommen, allerdings die Breiten/Höhen sind nicht eindeutig genug, um sie genau zu ziehen (sie scheinen sich pro Bild zu ändern) –

19

Sie müssen die API mit den field_expansion syntax

Diese api Anfragen arbeitet anfordern:

$results = $facebook->api('/me', array('fields' => 'picture.height(300).width(300)'));

$results = $facebook->api('/me', array('fields' => 'picture.type(large)'));

+0

Ich versuchte dies aber auf einem Bildobjekt - und ich habe den Fehler: Uncaught OAuthException: Unterfelder werden nicht von Bild unterstützt –

+0

funktioniert wie ein Charme. Vielen Dank –