2011-12-15 24 views
7

Resumen:Obtener imagen de perfil de usuario de Facebook antes de la autenticación de aplicación

estoy trabajando en un sitio web que conecta a Facebook a través de la API de gráficos. Me preguntaron si puedo obtener una foto de perfil de usuario si ya han iniciado sesión en Facebook, pero antes de que el usuario autentique la aplicación. es posible?

EDIT: Sé que puede obtener imagen de perfil de la gente yendo a http://graph.facebook.com/USERNAME_OR_USERID/picture?type=large, pero iba a ser capaz de obtener nombre de usuario o el ID de un usuario si está conectado a Facebook, pero no han autorizado a mi aplicación?


Detalles:

De acuerdo con la Facebook API User documentation, se pueden obtener su ID de Facebook sin una señal_acceso, y sé que si vas directamente a/me URL de un usuario se puede ver su información básica. Con la identificación de Facebook, puedo tomar su foto de perfil.

Sin embargo, cuando intento llamarlo desde el sitio web utilizando el siguiente código, aparece un error OAuthException.

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

supongo que tienen que autenticar la aplicación, pero estoy buscando para ver si puede haber perdido una manera de conseguir su foto de perfil.

Gracias por su ayuda!

+0

No importa. Encontré la respuesta. No puede obtener su nombre de usuario o ID: http://facebook.stackoverflow.com/questions/7520300/facebook-app-without-prompted-authentication –

Respuesta

7

Puede obtener la foto de perfil de Facebook de todos sin autenticación.

Simplemente llame al http://graph.facebook.com/USERID/picture?type=large. Esta URL lo redirecciona a la URL de la imagen.

Editar: Query por nombre de usuario ya no está permitido, así que actualicé USERNAME_OR_USERID como USERID.

+0

Gracias, cebrici. Conozco esta URL, pero ¿cómo obtendría su nombre de usuario o ID sin que se autentiquen? –

+2

Descubrí que no puede obtener su nombre de usuario o ID sin autenticarse. Su respuesta fue mejor escrita, así que le daré la respuesta. –

+0

Estoy usando esto es url, pero está redirigiendo a una página con una imagen en blanco con un "signo de interrogación". Me puedes ayudar ? –

2

sí se puede conseguir ..

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

Gracias, Naseer. Conozco esta URL, pero ¿cómo obtendría su nombre de usuario o ID sin que se autentiquen? –

0

Puede generar un token de acceso utilizando un ID de aplicación y el secreto de la siguiente manera:

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

NOTA: No haga esto en el lado del cliente ya que corre el riesgo de que su aplicación sea secuestrada.

El token resultante puede ser el usuario para consultar a los usuarios con la API gráfica sin un aviso de inicio de sesión.

0

Cómo obtener imágenes FB w/o oauth o acceder a las fichas:

yo estaba tratando de obtener sólo imágenes de los pocos miembros, pero me he quedado atrapado luego escribió este fragmento y ha trabajado para mí,

la etiqueta HTML

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

el código 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; 
    } 
?> 

Solo tuve que usar una imagen de 30x30 y obtuve lo que quería. Verifique que también le proporciona una imagen grande.

¡Salud! Joy

Cuestiones relacionadas