2012-07-31 4 views
17

Estoy usando oauth para registrar usuarios de Facebook en mi aplicación. Estoy probando con mi cuenta FB y con el alcance de permisos básicos. Los documentos de Facebook dicen que debería poder obtener una "imagen" con permisos básicos, pero mi cuenta no tiene una propiedad de "imagen" cuando accedo a ella con la API. Sin embargo, el nombre, el apellido, etc. están ahí.facebook oauth, no hay foto con permisos básicos

¿Esto se debe a que mi cuenta no se puede ver públicamente? ¿Por qué podría suceder esto? Definitivamente tengo una foto de perfil adjunta.

Aquí está mi enlace fb: http://www.facebook.com/josh.nankin

+0

acaba de confirmar esto con otra cuenta. el mismo problema con eso también –

Respuesta

4

Por lo tanto, todavía no está seguro de por qué el API de gráficos no devuelve una propiedad de imagen cuando se pulse el yo ruta/en la API, pero una vez que tenga el nombre de usuario desde/mi, se puede obtener la imagen con bastante facilidad en:

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

+0

Sí ... realmente no le presto mucha atención a los documentos. Es muy confuso, obtienes resultados drásticamente diferentes de FQL y OG. La forma más sencilla de ver qué campos se devuelven es usar el explorador https: //developers.facebook.com/tools/explorer –

+3

Para obtener un tamaño más grande también puede usar: https://graph.facebook.com/USERNAME/picture?type=large – simoes

+2

También puede usar el número de identificación de usuario en lugar del nombre de usuario –

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)”

Probablemente no hayas pasado por alto la parte marcada en negrita ...?

+0

Esto ya no es el caso, y esta oración ya no está en la documentación. –

17

La mejor manera es conservar los permisos básicos y activar la solicitud de la imagen en un paso separado. Pedir a la API gráfica de esta manera:

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

agrandar imagen:

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

obtendrá una respuesta JSON como:

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

parece que ya no funciona: https://graph.facebook.com/914431778578699?fields=picture.type(large) devuelve el error: 'Se requiere un token de acceso para solicitar este recurso' – stkvtflw

6

Puede derivar la URL foto de perfil directamente desde la información básica estándar de OAuth devuelta desde Facebook, como señaló Josh Nankin, PERO con una aclaración.

Puede seguir utilizando el ID del usuario volvió a solicitar a la foto, por ejemplo:

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

es lo mismo que

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

De esta manera sólo una solicitud debe hacerse , porque puede interpolar la URL de la foto mientras la almacena en la base de datos.

1

En realidad, no es necesario permitir el acceso público para obtener la imagen de perfil, ya que puede obtener el USER_ID. Aunque USER_ID puede navegar a la imagen de perfil fácilmente.

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; 
     }); 
    }); 
} 

Puede cambiar el tipo en linkpp variable para type = pequeña que devuelve una imagen de baja resolución.

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