2010-06-05 16 views
6

Utilizzo di PHP 5.2.11 e il nuovo codice grafico di facebook ...Facebook Graph API non mi darà i dati delle immagini

Se chiamo

$ facebook-> api ("/ me");

ottengo una risposta adeguata:

array 
    'id' => string '10700210' (length=8) 
    'name' => string 'Brandon Renfrow' (length=19) 
    'first_name' => string 'Brandon' (length=7) 
    'middle_name' => string '✫' (length=3) 
    'last_name' => string 'Renfrow' (length=7) 
    'link' => string 'http://www.facebook.com/brenfrow' (length=32) 
    'about' => string 'Spiritual birthday: 1/22/2005' (length=29) 
    ... 
    ... 

Ma se io chiamo

$facebook->api("/me/picture"); 

Ho sempre trovato una risposta di:

null 

Qualcuno sa perché questo è?

risposta

14

Beh credo che la risposta migliore che ho trovato è quella di chiamare http://graph.facebook.com/USER_ID?fields=picture per ottenere l'URL dell'immagine. È male non documentano cose come questa sulla loro API, soprattutto quando è ovvio che questo è rotto per così tante persone.

+4

Grazie per aver capito. L'API del grafico di Facebook è probabilmente una delle API documentate più pessime e persino peggiori con cui abbia mai lavorato. – Luke

0

Ho appena andato al mio "me/immagine /" nel browser e mi reindirizzati a immagini statiche su uno dei server CDN di Facebook. Forse il reindirizzamento sta lanciando una chiave inglese nella tua chiamata API.

3

C'è un modo ancora più semplice, utilizzando l'API di Facebook fornito, basta chiamare:

$facebook->api("/me?fields=picture");

Questo renderà il vostro codice più semplice e più elegante.

8

In aggiunta alle betaman s' answer, è possibile passare i parametri in un array separato in questo modo:

$aResponse = $oFacebook->api('/me', array(
    'fields' => 'picture', 
    'type' => 'large' 
)); 
+0

+1 Proprio quello di cui avevo bisogno, grazie! –

+0

Restituirà solo la piccola immagine. – kschaeffler

+0

Deve essere nuovo. Certamente ha funzionato in questo modo quando ho postato questo. – enobrev

6

si può nemmeno bisogno di fare una chiamata API ... utilizzare questo sul tuo frontend :

<img src="//graph.facebook.com/USER_ID/picture?type=square" /> 

Read more here: http://developers.facebook.com/docs/reference/api/#pictures

+0

ho appena letto questo vecchio post in modo casuale oggi e questa è la risposta a qualcosa Ive riflettere per un po ' –

+0

Questo funziona bene, ma aggiunge latenza mentre il percorso dell'immagine viene risolto tramite un reindirizzamento. – KeatsKelleher

1

Durante l'utilizzo di $ facebook-> api ("?/me campi = immagine"); funziona, non sarai in grado di passare parametri come larghezza o tipo. Prova invece il seguente:

$facebook->api('/me/picture?redirect=false'); 

Questo ha funzionato per me e ti permetterà anche di passare i parametri.