SÍ, hay una manera de obtener la imagen de perfil original (la mayor parte del tiempo más grande) de una página de Facebook.
En realidad, la respuesta ya está en la pregunta. La url de la imagen original ya está incrustada en la url save_image. En su caso se trata de "url = http% 3A% 2F% 2Fi52.tinypic.com% 2F2q0ixzl.jpg”, que significa "http://i52.tinypic.com/2q0ixzl.jpg"
En mi caso, la página de Londres es
https://www.facebook.com/pages/London-United-Kingdom/106078429431815?fref=ts
I puede fácilmente obtener su ID de objeto fb de búsqueda por palabra clave Londres. he intentado utilizar el parámetro anchura y altura. trabajan con imagen de perfil de usuario o una imagen compartida del usuario pero no pueden trabajar con las páginas públicas foto de perfil.
https://graph.facebook.com/106078429431815/picture?width=300&height=300 // can’t work
La imagen más grande que puedo obtener siguiendo url whic h es solo 180x77
https://graph.facebook.com/106078429431815/picture?type=large
Pero puedo obtener safe_image.php url mediante el uso de API gráfica fb, y el URL de la imagen original es también dentro de la sección url los parámetros
"url": "https://fbexternal-a.akamaihd.net/safe_image.php?d=AQCrtKykRotXBuaS&w=180&h=540&url=http%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2Fthumb%2Farchive%2F2%2F21%2F20141005220235%2521City_of_London_skyline_at_dusk.jpg%2F720px-City_of_London_skyline_at_dusk.jpg&fallback=hub_city&prefix=d"
Aquí es código que he usado.
[FBRequestConnection startWithGraphPath:[NSString stringWithFormat:@"/%@/picture?redirect=false&type=large",[firstCityPage objectForKey:@"id"]]
completionHandler:^(
FBRequestConnection *connection,
id result,
NSError *error
) {
NSString *profileImgUrl = [NSString stringWithFormat:@"http://graph.facebook.com/%@/picture?type=large", [firstCityPage objectForKey:@"id"]];
if (error==nil) {
NSString *fbSaveImgUrl = [[(NSDictionary*)result objectForKey:@"data"] objectForKey:@"url"];
NSURLComponents *urlComponents = [NSURLComponents componentsWithURL:[NSURL URLWithString:fbSaveImgUrl]
resolvingAgainstBaseURL:NO];
for (NSURLQueryItem *queryItem in urlComponents.queryItems) {
if ([queryItem.name isEqualToString:@"url"]) {
profileImgUrl = queryItem.value;
break;
}
}
} else {
NSLog(@"%@",[error description]);
}
NSLog(@"url: %@", profileImgUrl);
...
}];
PERO, existen riesgos.
No hay garantía de que la URL de la externa de la imagen será válida.
Facebook puede eliminar la URL externa explícita en la url de safe_image u ocultar la url de safe_image del desarrollador en el futuro.
Úselo bajo su propio riesgo.
¿Es esta una foto de perfil? –
sí, es .......... – PJR
simplemente estableciendo el ancho y alto de la imagen –