Obtener foto de perfil de usuario por Id

123

Ahora estoy trabajando en una aplicación web que se basa principalmente en la API gráfica de Facebook. Tengo algunos datos sobre los usuarios, en realidad, los posibles datos públicos disponibles, como el nombre y la identificación. También sé que una foto de perfil es parte de los datos públicos, y me preguntaba cómo podría obtener un enlace directo a una foto de perfil de un usuario solo usando su identificación.

Gracias por adelantado


fuente
Posible duplicado de la API
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Respuestas:

295

http://graph.facebook.com/ "+ facebookId +" / picture? type = square Por ejemplo: http://graph.facebook.com/67563683055/picture?type=square

También hay más tamaños además de "cuadrado". Ver los documentos .

Zack Bartel
fuente
31
Para cualquiera que quiera el enlace a los documentos: developers.facebook.com/docs/graph-api/reference/user/picture
Frankie Jarrett
32
Es mejor mirar los documentos porque también tienen todas las otras opciones. Por ejemplo, si desea una imagen cuadrada grande (dado que el valor predeterminado cuadrado es pequeño), debe usarla https://graph.facebook.com/{facebookId}/picture?type=large&width=720&height=720.
sudo
2
¿hay alguna manera de consultar la url de la imagen y no la imagen en sí? Me gustaría cargar la imagen en el front-end, no a través del servidor si es posible
Alexander Mills
1
Afortunadamente, esto le ahorrará a alguien un paso adicional para encontrar su ID de perfil - findmyfbid.com
jarmerson
3
use redirect = 0 para obtener una descripción JSON (incluida la url) en lugar de la imagen en sí misma
Ilya Denisov
123

Puede usar las siguientes URL para obtener diferentes tamaños de imágenes de perfil. Asegúrese de agregar la identificación de Facebook a la URL.

Foto de gran tamaño https://graph.facebook.com/ {facebookId} / picture? Type = large

Foto de tamaño mediano https://graph.facebook.com/ {facebookId} / picture? Type = normal

Foto de tamaño pequeño https://graph.facebook.com/ {facebookId} / picture? Type = small

Foto cuadrada https://graph.facebook.com/ {facebookId} / picture? Type = square

Dulitha Kumarasiri
fuente
2
Así fue como pude descubrir mi propio FacebookId: developers.facebook.com/tools/explorer/…
Ryan
39

Para obtener el tamaño más grande de la imagen.

https://graph.facebook.com/{userID}?fields=picture.width(720).height(720) 

o cualquier otra cosa que necesites como tamaño. Según la experiencia, type = large no es el resultado más grande que puede obtener.

Reyalsnogard
fuente
1
también puede pasar: graph.facebook.com {userID}? fields = picture.type (large) esto es útil cuando tienes algo como esto, String url = " graph.facebook.com/me?fields=id,name,email , picture.type (large) como se menciona en otras respuestas, puede reemplazar grande por normal, pequeño, cuadrado ...
yajnesh
¿No necesita esto un token de acceso (hoy en día)?
Bernoulli IT
13

Esto está literalmente en la portada de la documentación de Graph API .

  • /OBJECT_ID/picture devuelve una redirección a la imagen del objeto (en este caso, los usuarios)
  • /OBJECT_ID/?fields=picture devuelve la URL de la imagen

Ejemplos:

<img src="https://graph.facebook.com/4/picture"/> utiliza una redirección HTTP 301 a la foto de perfil de Zuck

https://graph.facebook.com/4?fields=picture devuelve la URL en sí

Igy
fuente
1
Por desgracia, ya no está en la página de inicio de los documentos Graph API, ahora está aquí: developers.facebook.com/docs/graph-api/using-graph-api
Igy
3
NO , no está en la portada de la documentación de Graph API. Será mejor que evite las declaraciones de restricción de tiempo en SO. Ya sabes ... las cosas cambian bastante rápido esos días ...
Gianluca Ghettini
e irónicamente, su respuesta es mucho más útil con información más relevante que la página de la API gráfica :-)
Simon_Weaver
6

Aquí, esta API le permite obtener fácilmente fotos de perfil de fb, google y twitter

https://www.avatars.io/

Es una API que devuelve la imagen de perfil cuando se le asigna un nombre de usuario para una variedad de redes sociales, incluidas Twitter, Facebook, Instagram y gravatar. Tiene bibliotecas para iOS, Android, Ruby, Node, PHP, Python y JavaScript.

Norielle Cruz
fuente
1
¡Eso es realmente fantástico! Solo porque SO le gusta que los enlaces se describan con un poco más de detalle; es una API que devuelve la imagen de perfil cuando se le asigna un nombre de usuario para una variedad de redes sociales, incluidas Twitter, Facebook, Instagram y gravatar. Tiene bibliotecas para iOS, Android, Ruby, Node, PHP, Python y JavaScript. Una pieza excepcional de software. Se puede encontrar en GitHub .
Ari Cooper-Davis
3

puedes obtenerlo usando esta url: obtendrás la imagen HD (tamaño máximo)

https://graph.facebook.com/{userID}?fields=picture.width(720).height(720)&redirect=false

no olvides redirect = false o devolverá un error

Mahmoud Turki
fuente
2

Use la URL como: https: //graph.facebook.com/ user_id / picture? Type = square en el src de la etiqueta img. El tipo puede ser pequeño, grande.

Needhi Agrawal
fuente
2

Puede usar AngularJs para esto, su función de enlace de datos bidireccional obtendrá una solución con un mínimo esfuerzo y menos código.

<div> <input type="text" name="" ng-model="fbid"><br/> <img src="https://graph.facebook.com/{{fbid}}/picture?type=normal"> </div>

Espero que esto responda a su consulta. Nota: También puede usar otra biblioteca.

Srinivas
fuente
1

A través del SDK de Javascript (v2.12 - abril de 2017) puede obtener los detalles de la solicitud de imagen de esta manera:

FB.api("/" + uid + "/picture?redirect=0", function (response) {
  console.log(response);

  // prints the following:
  //data: {
  //  height: 50
  //  is_silhouette: false
  //  url: "https://lookaside.facebook.com/platform/profilepic/?asid=…&height=50&width=50&ext=…&hash…"
  //  width: 50
  //}

  if (response && !response.error) {
    // change the src attribute of img elements
    [...document.getElementsByClassName('fb-user-img')].forEach(
      i => i.src = response.data.url
    );

    // OR redirect to the URL above
    location.assign(response.data.url);
  }
});

Para obtener la respuesta JSON, el parámetro redirectcon 0 (cero) como valor es importante ya que la solicitud redirige a la imagen de forma predeterminada. Aún puede agregar otros parámetros en la misma URL. Ejemplos:

  • "/" + uid + "/picture?redirect=0&width=100&height=100": se devolverá una imagen de 100x100;
  • "/" + uid + "/picture?redirect=0&type=large": se devuelve una imagen de 200x200. Otros valores de tipo posibles incluyen: pequeño , normal , álbum y cuadrado .
CPHPython
fuente
1

Según la última versión 3.2 de la API de Facebook actual, para los usuarios puede usar este método genérico para obtener una imagen de perfil: https://graph.facebook.com/v3.2/{user-id}/picture?type=square puede visite la documentación para la imagen del usuario aquí . Los valores posibles para el parámetro de tipo en URL pueden ser pequeños, normales, álbum, grandes, cuadrados

Para grupos y páginas , la imagen de perfil no está disponible directamente. Tienes que obtenerlos usando el token de acceso. Para los grupos, debe usar el token de acceso de usuario y para las páginas puede usar tanto el token de acceso de usuario como el token de acceso de página.

Puede obtener la imagen de perfil del grupo o de la página utilizando la URL genérica: https://graph.facebook.com/v3.2/{user-id}/picture?access_token={access-token}&type=square

Espero que esto sea útil para las personas que buscan una foto de perfil de página o grupo.

Avtar Gaur
fuente
Para la mayoría de las páginas, obtengo la imagen de perfil de las páginas sin token de acceso, pero para algunas páginas está devolviendo una imagen de signo de interrogación como respuesta en el siguiente formato. {"data": {"is_silhouette": true, "url": " static.xx.fbcdn.net/rsrc.php/v3/y6/r/_xS7LcbxKS4.gif "}} ¿Alguna pista?
xyz
0

Puede usar el siguiente punto final para obtener image.jfif en lugar de jpg:

https://graph.facebook.com/v3.2/{user-id}/picture

Tenga en cuenta que no podrá ver la imagen, solo descárguela.

Rachan Neamprasert
fuente