facebook-graph-api - programacion - personalizar contact form 7 plugin
¿Cómo obtener URL de foto grande en una llamada de API? (6)
Cuando estaba teniendo este problema, descubrí que resultó ser la imagen que estaba descargando en lugar del tamaño que estaba configurando.
Si, por ejemplo, descargué todas mis fotos con una solicitud de
[FBRequestConnection startWithGraphPath:@"/me/photos?fields=created_time,name,picture&type=tagged" parameters:nil HTTPMethod:@"GET" completionHandler:^(FBRequestConnection * connection, id result, NSError *error) {
NSDictionary * userData = (NSDictionary *)result;
NSMutableArray * array = [[NSMutableArray alloc] initWithArray:userData[@"data"]];
for (NSDictionary * dict in eventsToAdd) {
UIImage * image = dict[@"picture"]
}
}];
Estoy usando la "imagen" de búsqueda de clave del diccionario como quiero la imagen.
Sin embargo, esto me dará una imagen de menor calidad que si busqué "fuente" en esta búsqueda:
[FBRequestConnection startWithGraphPath:@"/me/photos?fields=created_time,name,source&type=tagged" parameters:nil HTTPMethod:@"GET" completionHandler:^(FBRequestConnection * connection, id result, NSError *error) {
NSDictionary * userData = (NSDictionary *)result;
NSMutableArray * array = [[NSMutableArray alloc] initWithArray:userData[@"data"]];
for (NSDictionary * dict in eventsToAdd) {
UIImage * image = dict[@"source"]
}
}];
Si vas al explorador de la API de Facebook y buscas fotos, y luego haces clic en la imagen y en los enlaces jpg de origen, puedes ver la diferencia en tamaño y calidad.
Desde que cambié este método, me las arreglé para deshacerme del uso de los parámetros de tipo ya que no parece ser diferente.
Nota: Estoy usando iPhone y no iPad o una pantalla más grande, así que no sé cómo afecta esto a las pantallas más grandes.
Quiero mostrar fotos grandes en la vista de feed de mi aplicación de Facebook de inmediato. ¿Es posible obtener la URL de gran tamaño de una fuente / transmisión de fotos utilizando una llamada API? La identificación con foto se devuelve en la transmisión / alimentación y, por supuesto, se puede proporcionar esta identificación con foto en una llamada FQL o API adicional de gráficos para recuperar toda la información sobre esa foto. Sin embargo, ¿hay alguna manera de usar llamadas de múltiples consultas o por lotes para obtener una url de src de foto más grande usando una ida y vuelta de API?
La respuesta de @streetlogics funciona bien, pero solo en las imágenes que tienen {object_id}
.
http://graph.facebook.com/{object_id}/picture
Pero también quería imágenes grandes para los enlaces compartidos del feed, que a veces no tienen {object_id}
. Finalmente me di cuenta de que la URL de miniatura {picture}
contiene la URL codificada para la imagen grande del sitio original:
https://external.xx.fbcdn.net/safe_image.php?d=AQBe9UvGd0vPbAHP&w=130&h=130&url=http%3A%2F%2Fskift.com%2Fwp-content%2Fuploads%2F2015%2F12%2Fpollution.jpg&cfs=1
-> contiene ->
http://skift.com/wp-content/uploads/2015/12/pollution.jpg
Así que hice un bucle que busca {object_id}
y, si no está presente, extrae la URL de {picture}
:
if(isset($post[''object_id''])) {
echo "http://graph.facebook.com/".$post[''object_id'']."/picture";
}
elseif(isset($post[''picture''])) {
echo urldecode(preg_replace(''/&cfs.*/'', '''', preg_replace(''/.*url=/'', '''', $post[''picture''])));
}
else {
echo "no_large_image";
}
No he intentado esto con fotos de transmisión / transmisión, pero la forma generalmente aceptada de hacerlo es:
http://graph.facebook.com/{ID of object}/picture
Si quieres la versión "grande", harías:
http://graph.facebook.com/{ID of object}/picture?type=large
No estoy 100% seguro de si esto funcionaría para una foto real (en lugar de una foto de perfil de usuario o una foto de perfil de página), pero tengo la corazonada de que lo hará, la única advertencia es que obviamente debes tener un usuario conectado que está autorizado para ver la foto (a menos que sea pública).
Si alguien está mirando esto y escriba grande no es suficiente, encontré otras soluciones.
Tipo large
es algo pequeño de todos modos (cerca de 200px). Puede obtener una imagen más grande agregando, por ejemplo ?width=1000
o ?height=1000
. Facebook devolverá la imagen más cercana a la dimensión dada y preservará la relación de aspecto. Al pasar ambas dimensiones como ?width=1000&height=1000
, Facebook cortará la imagen a determinadas dimensiones (en este caso, cuadrado).
Un buen truco con la nueva API es obtener el campo pic_cover de la tabla de eventos y procesarlo de acuerdo con el tamaño que desee utilizar.
Use Facebook UserId (Oject ID) para obtener la imagen.
https://graph.facebook.com/173xxxx8635/picture?type=large&redirect=false
que devuelve datos JSON con la URL de la imagen.
{
"data": {
"is_silhouette": false,
"url": "https://fbcdn-profile-a.akamaihd.net/xxx/xyz/1cc066a2cae3f301d"
}
}