facebook - picture - images for whatsapp profile
Obtener la URL de imagen de perfil de Facebook "real" de la API de gráficos (12)
La API de gráficos de Facebook me dice que puedo obtener una foto de perfil de un usuario usando
http://graph.facebook.com/517267866/picture?type=large
que funciona bien Sin embargo, cuando escribe la URL anterior en un navegador, la dirección real de la imagen es
http://profile.ak.fbcdn.net/profile-ak-snc1/v227/560/83/n517267866_1928.jpg
¿Cómo puedo obtener la segunda URL usando la primera mediante programación?
Ahora, Facebook necesita SSL
-> Importante añadido S, https -> https://graph.facebook.com/userId/?fields=picture&type=large
Funciona en junio / 2014
Hmm ... intenté todo para obtener la URL de la imagen del usuario. La solución perfecta fue fql uso como este->
$fql_b = ''SELECT pic from user where uid = '' . $user_id;
$ret_obj_b = $facebook->api(array(
''method'' => ''fql.query'',
''query'' => $fql_b,
));
$dp_url =$ret_obj_b[0][''pic''];
reemplace pic por grande, pic_square para obtener otros resultados deseados. Espero que AYUDÓ ....
Me doy cuenta de que esto es tarde, pero hay otra forma de obtener la URL de la imagen del perfil.
A su url original, puede agregar el parámetro redirect=false
para obtener la URL real de la imagen a la que normalmente se le redirigiría.
Por lo tanto, la nueva solicitud se vería como http://graph.facebook.com/517267866/picture?type=large&redirect=false . Esto devolverá un objeto JSON que contiene la URL de la imagen y una booleana is_silhouette (verdadera si la imagen es la imagen predeterminada de Facebook).
La imagen será del tamaño que especificó, también. Puede probar esto adicionalmente agregando dimensiones: http://graph.facebook.com/517267866/picture?type=large&redirect=false&width=400&height=400
Si desea el JSON de una imagen de perfil de buena calidad con la URL, puede usar eso:
http://graph.facebook.com/517267866/picture?height=1024&redirect=false
si solo necesita la imagen, úselo sin el parámetro redirigir:
http://graph.facebook.com/517267866/picture?height=1024
517267866 es el ID de perfil de uno de los ejemplos anteriores. Pon la identificación de Facebook que necesitas
Espero que eso ayude
este es el único que realmente funciona:
me?fields=picture.type(*YOURTYPE*)
donde YOURTYPE puede ser uno de los siguientes: small, normal, album, large, square
http://graph.facebook.com/517267866/?fields=picture&type=large
Devolvería la URL en JSON
Para Android:
De acuerdo con el último SDK de Facebook,
En primer lugar, debe llamar a la GraphRequest API
para obtener todos los detalles del usuario, en los que la API
también proporciona la URL of current Profile Picture
.
Bundle params = new Bundle();
params.putString("fields", "id,email,gender,cover,picture.type(large)");
new GraphRequest(token, "me", params, HttpMethod.GET,
new GraphRequest.Callback() {
@Override
public void onCompleted(GraphResponse response) {
if (response != null) {
try {
JSONObject data = response.getJSONObject();
if (data.has("picture")) {
String profilePicUrl = data.getJSONObject("picture").getJSONObject("data").getString("url");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}).executeAsync();
Para cualquier otra persona que busque obtener la foto de perfil en iOS:
Acabo de hacer esto para obtener la foto de Facebook del usuario:
NSString *profilePicURL = [NSString stringWithFormat:@"http://graph.facebook.com/%@/picture?type=large", fbUserID];
donde ''fbUserID'' es el ID de perfil del usuario de Facebook.
De esta manera siempre puedo llamar a la url en profilePicURL para obtener la imagen, y siempre la obtengo, no hay problema. Si ya tiene la ID de usuario, no necesita ninguna solicitud de API, solo inserte la ID en la url después de facebook.com/.
FYI a cualquiera que busque quién necesita el fbUserID en iOS:
if (FBSession.activeSession.isOpen) {
[[FBRequest requestForMe] startWithCompletionHandler:
^(FBRequestConnection *connection,
NSDictionary<FBGraphUser> *user,
NSError *error) {
if (!error) {
self.userName = user.name;
self.fbUserID = user.id;
}
}];
}
Necesitarás una FBSession activa para que funcione (consulta los documentos de Facebook y el ejemplo "Scrumptious").
La primera URL da un HTTP 302 (redirección temporal) a la segunda. Entonces, para encontrar la segunda URL programáticamente, podría emitir una solicitud HTTP para la primera URL y obtener el encabezado de Location
de la respuesta.
Dicho esto, no confíe en que la segunda URL sea permanente. Leyendo un poco sobre el código de respuesta HTTP (de 302 frente a un 301 permanente), es posible que Facebook cambie esas URL de manera regular para evitar que las personas, por ejemplo, utilicen sus servidores para alojar imágenes.
Editar: Observe que la URL de CDN que OP publicó ahora es 404, por lo que sabemos que no podemos confiar en que la URL sea de larga duración. Además, si está enlazando a Graph API desde una <img>
en una página segura de SSL, hay un parámetro que debe agregar, asegúrese de usar http s ://graph.facebook.com
.
Actualización: la API ha agregado un parámetro - redirect=false
- que hace que se devuelva JSON en lugar de redirigir. El JSON recuperado incluye la URL CDN:
{
"data": {
"url": "http://profile.ak.fbcdn.net/...",
"is_silhouette": false
}
}
Nuevamente, no confiaría en que esta URL de CDN sea duradera. La respuesta JSON se envía con encabezados permisibles CORS, por lo que puede hacer este lado del cliente con solicitudes XHR.
$url = ''http://graph.facebook.com/100000771470028/picture?type=large'';
$rray=get_headers($url);
$hd = $rray[4];
echo(substr($hd,strpos($hd,''http'')));
Esto devolverá la URL que solicitó, y el problema de cambiar la URL en Facebook no importa porque está llamando dinámicamente a la URL desde la URL original.
ImageView user_picture;
userpicture=(ImageView)findViewById(R.id.userpicture);
URL img_value = null;
img_value = new URL("http://graph.facebook.com/"+id+"/picture?type=large");
Bitmap mIcon1 = BitmapFactory.decodeStream(img_value.openConnection().getInputStream());
userpicture.setImageBitmap(mIcon1);
Donde la ID es una identificación de su perfil .
function getFacebookImageFromURL($url)
{
$headers = get_headers($url, 1);
if (isset($headers[''Location'']))
{
return $headers[''Location''];
}
}
$url = ''https://graph.facebook.com/zuck/picture?type=large'';
$imageURL = getFacebookImageFromURL($url);