2011-04-05 5 views

Respuesta

8

Puede utilizar la secuencia de comandos de Python a continuación (como no se menciona ningún lenguaje de programación) para que funcione.

urllib.urlopen('https://graph.facebook.com/<PROFILE_ID>/picture?access_token=%s' % access_token).geturl() 

Esto le proporcionará una URL foto de perfil de Facebook. Si esa URL contiene < PROFILE_ID>, carga una imagen. De lo contrario, se carga la imagen predeterminada de Facebook.

Por ejemplo, si la imagen subido:

http://profile.ak.fbcdn.net/hprofile-ak-snc4/195361_<PROFILE_ID>_4179703_q.jpg 

otra cosa:

: Hombre:

http://b.static.ak.fbcdn.net/rsrc.php/v1/yo/r/UlIqmHJn-SK.gif 

para la hembra:

https://fbcdn-profile-a.akamaihd.net/static-ak/rsrc.php/v1/y9/r/IB7NOFmPw2a.gif 

espero que esto ayude.

+0

Para los desarrolladores de PHP, puede utilizar:? '/picture? access_token = ". $ access_token)); ?> ' Y encuentre la ubicación en el encabezado :) –

+0

Para hombres y mujeres hay diferentes imágenes. Así que averigüe cómo ubicaciones para hombre/mujer. También es posible verificar los archivos por suma de comprobación. –

+0

Actualicé la publicación. Espero que te ayude ...:) –

3

Según mis experimentos con la API de Facebook, parece que uno tiene que obtener realmente la imagen para saber si es una predeterminada estática o no.

En el momento de la redacción, parece que todas las fotos cargadas en Facebook se convierten a JPEG, mientras que las imágenes estáticas predeterminadas están en el formato GIF. (Por cierto, esto no es consistente con algunos tamaños de miniaturas).

Buscar un archivo GIF específico o una ruta URL específica no es confiable (tenga en cuenta que hay URL CDN implicadas, y que hay diferentes archivos estáticos para hombre y mujer). Suponiendo que Facebook no vuelva a codificar toda la base de datos de fotos de perfiles, supongo que buscar un GIF es lo suficientemente confiable.

Aquí hay una función PHP de ejemplo para hacer esto. Lo probé con éxito con mis 120 amigos de Facebook, y parece hacer el trabajo.

public static function hasProfilePicture($fbuid) 
{ 
    /* Really stupid method to test if Facebook user has real profile picture 
    * based on Facebook returning a GIF image when you request a large photo. 
    * Use with care - for every profile there's an outgoing request! */ 
    $r = get_headers("http://graph.facebook.com/$fbuid/picture?type=square"); 
    return !array_search("Content-Type: image/gif",$r); 
} 
22

Si un usuario no tiene una foto entonces el campo is_silhouette será cierto cuando se solicita el objeto de usuario con el campo "foto" especificado.

Ejemplo solicitud:

https://graph.facebook.com/username?fields=picture 

Respuesta:

{ 
    "id": "100002095576350", 
    "picture": { 
     "data": { 
     "url": "http://profile.ak.fbcdn.net/static-ak/rsrc.php/v2/yo/r/UlIqmHJn-SK.gif", 
     "is_silhouette": true 
     } 
    } 
} 

rápida, sucio función de PHP:

function facebook_user_has_photo($username_or_id){ 

     $request = file_get_contents('https://graph.facebook.com/'.$username_or_id.'?fields=picture'); 

     if($request): 

      $user = json_decode($request); 

      if($user && !$user->picture->data->is_silhouette) return true; 

     endif; 

     return false; 

} 
+0

esto funciona como un encanto – Prozi

+0

esta debería ser la respuesta aceptada. – Martin

Cuestiones relacionadas