2012-07-31 13 views
17

Sto usando oauth per registrare gli utenti di Facebook nella mia app. Sto testando il mio account FB e l'ambito delle autorizzazioni di base. I documenti di Facebook dicono che dovrei essere in grado di ottenere un'immagine con le autorizzazioni di base, ma il mio account non ha alcuna proprietà 'immagine' quando accedo con l'API. Il nome, il cognome, ecc. Ci sono comunque.facebook oauth, nessuna immagine con permessi di base

È perché il mio account non è visibile pubblicamente? Perché questo potrebbe accadere? Ho sicuramente una foto del profilo allegata.

Ecco il mio link fb: http://www.facebook.com/josh.nankin

+0

ha appena confermato questo con un altro account. lo stesso problema con quello troppo. –

risposta

4

Quindi, ancora non so perché l'API grafico non restituisce una proprietà foto quando si preme il mi percorso/sulle API, ma una volta che hai il nome utente da/me, è possibile ottenere l'immagine piuttosto facilmente a:

https://graph.facebook.com/USERNAME/picture

+0

Sì ... non prendo più molta attenzione ai documenti. È troppo confuso, ottieni risultati drasticamente diversi da FQL e OG. Il modo più semplice per vedere quali campi vengono restituiti è utilizzare l'explorer https: //developers.facebook.com/tools/explorer –

+3

Per ottenere una dimensione più grande puoi anche utilizzare: https://graph.facebook.com/USERNAME/picture?type=large – simoes

+2

Puoi anche utilizzare il numero ID utente al posto del nome utente –

4

https://developers.facebook.com/docs/reference/api/user/:

“picture: The URL of the user's profile pic (only returned if you explicitly specify a 'fields=picture' param)”

Probabilmente non hai trascurato la parte contrassegnata in grassetto ...?

+0

Questo non è più il caso, e questa frase non è più nella documentazione. –

17

il modo migliore è mantenere le autorizzazioni di base e attivare la richiesta per l'immagine in un passaggio separato. Chiedi l'API grafico in questo modo:

https://graph.facebook.com/[fb_user_id]?fields=picture.type(small) 

ingrandisci:

https://graph.facebook.com/[fb_user_id]?fields=picture.type(large) 

avrete una risposta JSON come:

{ 
    "id": "100001XXXXXXXXX", 
    "picture": { 
     "data": { 
     "url": "http://profile.ak.fbcdn.net/hprofile-XXXX/41524_1000018XXX51507_XXXX3_q.jpg", 
     "is_silhouette": false 
     } 
    } 
} 
+0

sembra non funzionare più: https://graph.facebook.com/914431778578699?fields=picture.type(large) restituisce errore: 'È richiesto un token di accesso per richiedere questa risorsa' – stkvtflw

6

È possibile derivare la foto del profilo URL direttamente dalla informazioni OAuth standard di base restituite da Facebook come ha notato Josh Nankin, MA con un chiarimento.

È comunque possibile utilizzare l'ID utente tornato a chiedere la foto, ad esempio:

https://graph.facebook.com/914431778578699/picture?type=large

è lo stesso di

https://graph.facebook.com/dark.eye.1/picture?type=large

In questo modo solo una richiesta deve essere presentata , perché è possibile interpolare l'URL della foto man mano che lo si archivia nel DB.

1

In realtà non è necessario consentire l'accesso pubblico per ottenere l'immagine del profilo poiché è possibile ottenere USER_ID. Anche se USER_ID puoi navigare facilmente sull'immagine del profilo.

function checkLoginState() { 
    FB.getLoginStatus(function(response) { 
     statusChangeCallback(response); 
     console.log('Welcome! Fetching your information.... '); 
     var url = '/me?fields=id,name'; 
     FB.api(url, function(response) { 
      var linkpp = 'https://graph.facebook.com/' + response.id + '/picture?type=large'; 
      document.getElementById("id_of_link_tag").href = linkpp; 
     }); 
    }); 
} 

È possibile modificare il tipo di in linkpp variabile per type = piccolo che restituisce un'immagine a bassa risoluzione.

var linkpp = 'https://graph.facebook.com/' + response.id + '/picture?type=small'; 
Problemi correlati