example - get photos from facebook api
Facebook Graph API: obtenga imágenes más grandes en una sola solicitud (17)
Actualmente estoy usando Graph API Explorer para hacer algunas pruebas. Esa es una buena herramienta.
Quiero obtener la lista de amigos del usuario, con nombres de amigos, identificaciones e imágenes. Entonces escribo:
https://graph.facebook.com/me/friends?fields=id,picture,name
Pero la imagen es solo de 50x50, y me gustaría una más grande en esta solicitud.
Es posible ?
Cambiar la matriz de id,name,picture
de los campos id,name,picture
a id,name,picture.type(large)
https://graph.facebook.com/v2.8/me?fields=id,name,picture.type(large)&access_token=<the_token>
Resultado:
{
"id": "130716224073524",
"name": "Julian Mann",
"picture": {
"data": {
"is_silhouette": false,
"url": "https://scontent.xx.fbcdn.net/v/t1.0-1/p200x200/15032818_133926070419206_3681208703790460208_n.jpg?oh=a288898d87420cdc7ed8db5602bbb520&oe=58CB5D16"
}
}
}
Como se describe en este error en Facebook, también puede solicitar tamaños de imagen específicos ahora a través de la nueva sintaxis de " expansión de campo " de la API.
Al igual que:
https://graph.facebook.com/____OBJECT_ID____?fields=picture.type(large)
Creo que a partir de ahora la única forma de obtener imágenes grandes de amigos es usar FQL. Primero, necesitas buscar una lista de amigos:
https://graph.facebook.com/me/friends
Luego analiza esta lista y extrae todos los ids
amigos. Cuando tenga eso, solo ejecute la siguiente consulta FQL:
SELECT id, url FROM profile_pic WHERE id IN (id1, id2) AND width=200 AND height=200
200
aquí es solo un tamaño ejemplar, puede ingresar cualquier cosa. Deberías obtener la siguiente respuesta:
{
"data": [
{
"id": ...,
"url": "https://fbcdn-profile-a.akamaihd.net/..."
},
{
"id": ...,
"url": "https://fbcdn-profile-a.akamaihd.net/..."
}
]
}
Con cada url es el enlace a una imagen de 200x200px.
Desde v2.7
, /<picture-id>?fields=images
le dará una lista con diferentes tamaños de imágenes, el primer elemento es la imagen de tamaño completo.
No sé de ninguna solución para múltiples imágenes a la vez.
En las imágenes URL que se encuentran en las respuestas del Gráfico (las " http://photos-c.ak.fbcdn.net/ "), simplemente reemplace el valor predeterminado "_s.jpg" por "_n.jpg" ("tamaño normal") o "_b.jpg" ("tamaño grande") o "_t.jpg" (miniatura).
URL Hacakable / API REST mejoran la Web.
Hum ... Creo que encontré una solución.
De hecho, en solo puedo solicitar
https://graph.facebook.com/me/friends?fields=id,name
Según http://developers.facebook.com/docs/reference/api/ (sección "Imágenes"), la url de las fotos del perfil se puede compilar con la identificación del usuario
Por ejemplo, suponiendo que el ID de usuario está en $ id:
"http://graph.facebook.com/$id/picture?type=square"
"http://graph.facebook.com/$id/picture?type=small"
"http://graph.facebook.com/$id/picture?type=normal"
"http://graph.facebook.com/$id/picture?type=large"
Pero no es la URL de la imagen final, así que si alguien tiene una mejor solución, me alegraría saber :)
Investigué Graph API Explorer extensamente y finalmente encontré full_picture
https://graph.facebook.com/v2.2/$id/posts?fields=picture,full_picture
PD. Noté que full_picture no siempre proporcionará la imagen a tamaño completo que quiero. ''archivos adjuntos'' no
https://graph.facebook.com/v2.2/$id/posts?fields=picture,full_picture,attachments
JS estilo variante. Simplemente establece un ancho enorme de imagen grande y obtendrás la variante más grande.
FB.api(
''/'' + userId,
{fields: ''picture.width(2048)''},
function (response) {
if (response && !response.error) {
console.log(response.picture.data.url);
}
}
);
La mejor forma de hacer que todos los amigos (que también usan la aplicación, por supuesto) con tamaños de imagen correctos es usar la expansión de campo , ya sea con una de las etiquetas de tamaño (cuadrado, pequeño, normal, grande):
/me/friends?fields=picture.type(large)
(editar: esto ya no funciona)
... o puede especificar el ancho / alto:
me/friends?fields=picture.width(100).height(100)
Por cierto, también puedes escribirlo así:
me?fields=friends{picture.type(large)}
Puede especificar width & heigth en su solicitud a la API de gráficos de Facebook: http://graph.facebook.com/user_id/picture?width=500&heigth=500
Puede establecer el tamaño de la imagen en píxeles, como este:
https://graph.facebook.com/v2.8/me?fields=id,name,picture.width(500).height(500)
Puede usar full_picture en lugar de la tecla de imagen para obtener una imagen de tamaño completo.
También puedes intentar obtener la imagen si la quieres según la altura o el ancho
https://graph.facebook.com/user_id/picture?height=
O
https://graph.facebook.com/user_id/picture?width=
Los valores son por defecto en píxeles, solo necesita proporcionar el valor int
Tengo el mismo problema, pero probé este para resolver mi problema. devuelve una imagen grande. No es la solución perfecta, pero puedes probar esta.
https://graph.facebook.com/v2.0/OBJECT_ID/picture?access_token=XXXXX
intente cambiar el tamaño de la imagen cambiando el tamaño de píxel de la url en cada objeto json de la siguiente manera:
por ejemplo, cambio s480x480 para que sea s720x720
sin embargo, no necesita tirar del atributo ''imagen''. hay una manera mucho más conveniente, lo único que necesita es userid, vea el ejemplo a continuación;
https://graph.facebook.com/user_id/picture?type=large
El tipo de ps define el tamaño que desea
Por favor tenga en cuenta que al usar token con permisos básicos, / me / friends devolverá la lista de amigos solo con los atributos id + name
usuarios rest-fb (imagen cuadrada, res más grande): Conexión myFriends = fbClient.fetchConnection ("me / friends", User.class, Parameter.with ("fields", "public_profile, email, first_name, last_name, gender, picture .width (100) .height (100) "));