2011-12-15 7 views
7

Sommario:Ottenere immagine del profilo di Facebook dell'utente prima di autenticare app

Sto lavorando su un sito web che si collega a Facebook tramite l'API grafico. Mi è stato chiesto se posso ottenere l'immagine del profilo di un utente se sono già collegati a Facebook, ma prima che l'utente abbia autenticato l'app. È possibile?

EDIT: So che è possibile ottenere delle persone immagine del profilo andando a http://graph.facebook.com/USERNAME_OR_USERID/picture?type=large, ma sarei in grado di ottenere il nome utente o l'ID di un utente se sono connessi a Facebook, ma non hanno autorizzato la mia app?


Dettagli:

Secondo la Facebook API User documentation, è possibile ottenere il loro ID di Facebook senza access_token, e so che se si va direttamente a/me l'URL di un utente si può vedere il loro informazioni di base. Con l'ID di Facebook, posso prendere la foto del profilo.

Tuttavia, quando provo a chiamarlo dal sito Web utilizzando il codice seguente, viene visualizzato un errore OAuthException.

FB.api('/me', function(response) { 
    console.log(response); 
}); 

Sto indovinando che essi hanno per autenticare l'applicazione, ma sto cercando di vedere se forse ho perso un modo di ottenere il loro profilo pic.

Grazie per il vostro aiuto!

+0

Non importa. Ho trovato la risposta. Non è possibile ottenere il loro nome utente o ID: http://facebook.stackoverflow.com/questions/7520300/facebook-app-without-prompted-authentication –

risposta

7

È possibile ottenere l'immagine del profilo Facebook di tutti senza autenticazione.

Basta chiamare il numero http://graph.facebook.com/USERID/picture?type=large. Questo URL ti reindirizza all'URL dell'immagine.

Modifica: l'interrogazione per nome utente non è più consentita, quindi ho aggiornato USERNAME_OR_USERID come USERID.

+0

Grazie, cebrici. Conosco questo URL, ma come potrei ottenere il loro nome utente o ID senza che si autenticassero? –

+2

Ho capito che non è possibile ottenere il proprio nome utente o ID senza autenticazione. La tua risposta è stata scritta meglio, quindi ti darò la risposta. –

+0

Sto usando questo è url, ma il suo reindirizzamento a una pagina con un'immagine vuota con un 'punto interrogativo'. Mi potete aiutare ? –

2

sì, è possibile ottenere ..

http://graph.facebook.com/naseer.panhwer/picture?type=normal 
http://graph.facebook.com/naseer.panhwer/picture?type=small 
http://graph.facebook.com/naseer.panhwer/picture?type=large 
+1

Grazie, Naseer. Conosco questo URL, ma come potrei ottenere il loro nome utente o ID senza che si autenticassero? –

0

È possibile generare un token di accesso utilizzando un ID applicazione e segreta come segue:

https://graph.facebook.com/oauth/access_token?client_id= {} appID & client_secret = {} appSecret & grant_type = client_credentials

NOTA: non farlo sul lato del client poiché rischi di far sì che la tua applicazione venga compromessa.

Il token risultante può essere un utente per interrogare gli utenti con l'API grafico senza un prompt di accesso.

0

Come ottenere immagini FB w/o OAuth o token di accesso:

stavo cercando di ottenere solo immagini di alcuni membri, ma sono rimasto bloccato allora ha scritto questo frammento e ha lavorato per me,

il tag HTML

<img src="getFbImage.php?id=<fbid_of_the_person>&type=[small|large]" /> 

il codice PHP

<?php 

    $remoteImage = !isset($_GET['id']) ? "../images/default.png" : getImg($_GET['id']); 
    $imginfo = getimagesize($remoteImage); 
    header("Content-type: ".$imginfo['mime']); 
    readfile($remoteImage); 

    function getImg($id){ 
     $dom = new DOMDocument; 
     $dom->loadHTML(getData($id)); 
     $tags = $dom->getElementsByTagName('img'); 
     $img = ''; 
     foreach ($tags as $tag) { 
      $img =$tag->getAttribute('src'); 
      if($img=='') 
       continue; 
      else if(isset($_GET['type']) && $_GET['type']=='large') 
       break; 
     } 
     //This iteration has a lot of images try your luck. 
     return $img; 
    } 

    function getData($id){ 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL,'https://www.facebook.com/photo.php?fbid='.$id); 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_HEADER, 0); 
     curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 Firefox/39.0'); 
     $data = curl_exec($ch); 
     curl_close($ch); 
     return $data; 
    } 
?> 

Ho solo dovuto usare un'immagine 30x30 e ho ottenuto quello che volevo. Dai un'occhiata anche a te un'immagine grande.

Cheers! Gioia