En estos tiempos, donde muchisimas personas (por no decir todas) ya cuentan con un perfil en redes sociales, más sin embargo como ya sabemos, la "moda" o la red social con más usuarios en la red es Facebook. Esta plataforma cuenta con multiples servicios para los perfiles de las personas, como son: muro de mensajes (alias 'twitter de facebook'), fotos, videos, notas, aplicaciones, etc. Las empresas pueden aplicar estos mismos servicios, no como un perfil de usuario, si no como una compañía con una pagina fan. En estas paginas, las personas se unen para conocer sus promociones, fotos y actividad de dichas empresas. Esto es solo un gancho social para atraer a los usuarios, o como mantener clientes leales como tal es el caso de Starbucks. Todo esta plataforma puede ser aprovechada por los desarrolladores web para extraer la información con ayuda del API, creando un concepto muy parecido al de la nube (cloud computing). Pues bien, ahora vamos a aprender un poco de como aprovechar esta plataforma para crear galerías de fotos. Empezamos.
Lo primero...
Antes de empezar necesitamos contar con lo siguiente:
- Tener una cuenta en Facebook
- Tener acceso a la Fan Page de donde vamos a extraer la galería.
- Soporte libreria JSON de PHP
- Que la Fan Page sea totalmente publica.
- Que nuestro servidor soporte cURL (opcional).
Si contamos con lo anterior, ya podemos trabajar sobre nuestra pagina web para que muestre las fotos de facebook en el sitio. Si tu servidor no cuenta con cURL, no te preocupes, más adelante te voy a decir una alternativa a cURL. Como la galería tiene que ser publica, entonces no necesitaremos del access_token que necesita el Graph API de Facebook para reconocer al usuario que ya inicio sesión. Ahora si... sobre la marcha.
El siguiente paso...
Necesitamos obtener el numero de ID de nuestra galería, pero como en ninguna parte menciona la ID de la galería, ni en la URL, entonces necesitamos entrar al API, que si nos dirá como acceder, vamos a trabajar sobre una Fan Page que creé para este ejemplo. Mi Fan Page se llama "Faxterol Web" y su numero de ID es 116134141772310. Esta prueba se hace en el navegador, así que esta es la estructura de la URL de los albums de una fan page.
https://graph.facebook.com/ID_FANPAGE/albums
Sustituimos ID_FANPAGE por el ID de nuestra Fan Page. y nos mostrará algo así.
-
{
-
"data": [
-
{
-
"id": "116134595105598",
-
"from": {
-
"name": "Faxterol Web",
-
"category": "Unknown",
-
"id": "116134141772310"
-
},
-
"name": "Wallpapers PHP",
-
"description": "Algunos Wallpapers de PHP.",
-
"link": "http://www.facebook.com/album.php?aid=23384&id=116134141772310",
-
"count": 3,
-
"created_time": "2010-08-05T21:56:51+0000",
-
"updated_time": "2010-08-05T21:58:51+0000"
-
},
-
{
-
"id": "116134141772310",
-
"from": {
-
"name": "Faxterol Web",
-
"category": "Unknown",
-
"id": "116134141772310"
-
},
-
"name": "Fotos de perfil",
-
"link": "http://www.facebook.com/album.php?aid=-3&id=116134141772310",
-
"count": 1,
-
"created_time": "2010-08-05T21:55:42+0000",
-
"updated_time": "2010-08-05T21:55:42+0000"
-
}
-
],
-
"paging": {
-
"previous": "https://graph.facebook.com/116134141772310/albums?limit=25&since=2010-08-05T21%3A56%3A51%2B0000",
-
"next": "https://graph.facebook.com/116134141772310/albums?limit=25&until=2010-08-05T21%3A55%3A41%2B0000"
-
}
-
}
Nos desplega contenido en formato JSON, que contiene la variable data que es un arreglo, y tenemos dos galerías. Ponemos especial atencion en el parametro 'name', tomamos la de nombre "Wallpapers PHP", y tomamos su id (arriba de from). Despues de haber tomado el ID, ahora vamos a pedirle las fotos al API de Facebook con la siguiente url.
https://graph.facebook.com/ID_DEL_ALBUM/photos?limit=100
Sustituimos el ID_DEL_ALBUM por el numero de id del album que tomamos anteriormente y abrimos con el navegador para observar que tambien despliega los datos en JSON, pero ahora con las fotos del album. Añadimos la variable 'limit' a la url para limitar el numero de fotos que nos regresara el API, podemos cambiarlo si queremos. Ahora nuestra url es así: https://graph.facebook.com/116134595105598/photos?limit=100
Codigo a la ejecución... (vease, manos a la obra)
Ahora si, vamos a trabajar con nuestra galeria.Primero con nuestro codigo PHP.
-
<?php
-
//llamamos la URL con la librería cURL.
-
$gals = curl_init();
-
CURLOPT_URL => "http://graph.facebook.com/140387082653939/photos?limit=100",
-
CURLOPT_USERAGENT => "Faxterol 1.0 Windows es_MX / Chromium", //el 'user agent'
-
CURLOPT_RETURNTRANSFER => 1 //para que nos regrese el contenido y no lo imprima directamente
-
));
-
-
//el contenido quedará guardado en esta variable.
-
$galeria = curl_exec($gals);
-
curl_close($gals);
-
//codificamos el contenido JSON del API para poder usarlo como arreglo y/o objeto de PHP.
-
$galeria = json_decode($galeria);
-
-
//Esta es la variable de las fotos,
-
$fotos = $galeria->data;
-
?>
Si no tienes la librería cURL en tu servidor, puedes hacer lo siguiente.
-
<?php
-
-
//Extraemos el contenido de la galería y lo guardamos en una variable.
-
-
//codificamos el contenido JSON del API para poder usarlo como arreglo y/o objeto de PHP.
-
$galeria = json_decode($galeria);
-
-
//Esta es la variable de las fotos,
-
$fotos = $galeria->data;
-
?>
Despues de esto, vamos a imprimir las fotos con un foreach.
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-
<html>
-
<head>
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-
<title>Untitled Document</title>
-
</head>
-
<body>
-
<h1>Galeria</h1>
-
<ul><?php
-
<?
-
foreach($fotos as $idfoto => $foto){
-
?>
-
<li><a title="Foto <?=($idfoto+1);?> de la galería." href="<?=$foto->source;?>"><img title="Foto <?=($idfoto+1);?> la galería" src="<?=$foto->picture;?>" /></a></li>
-
<?php
-
}
-
?>
-
</ul>
-
</body>
-
</html>
la variable, $foto->source tiene guardada la URL de la foto en tamaño grande y la variable $foto->picture la URL de la foto en miniatura (thumbnail).
Y listo ya tenemos nuestra galería en nuestro sitio web.
Una manita de gato...
Si queremos darle una manita de gato, ahi que ponerle algo extra a nuestra galería, en este caso le pondrémos un lightbox. Descargamos un plugin llamado SexyLightbox y lo ponemos en nuestro sitio, el codigo queda de la siguiente manera.
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-
<html>
-
<head>
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-
<title>Untitled Document</title>
-
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
-
<script type="text/javascript" src="sexylightbox.v2.3.jquery.min.js"></script>
-
-
<script type="text/javascript" src="jquery.easing.1.3.js"></script>
-
<link rel="stylesheet" href="sexylightbox.css" type="text/css" />
-
-
<script type="text/javascript">
-
$(document).ready(function(){
-
});
-
</script>
-
</head>
-
<body>
-
<h1>Galeria</h1>
-
<ul><?php
-
<?
-
foreach($fotos as $idfoto => $foto){
-
?>
-
<li><a rel="sexylightbox[kmx]" title="Foto <?=($idfoto+1);?> de la galería" href="<?=$foto->source;?>"><img title="Foto <?=($idfoto+1);?> de la galería" src="<?=$foto->picture;?>" /></a></li>
-
<?php
-
}
-
?>
-
</ul>
-
</body>
-
</html>
Y listo, ya tenemos una muy bonita y sexy galería de fotos extraidas del facebook de la fan page.
Ventajas...
- No gastamos en espacio y ancho de banda de nuestro servidor
- Desarrollo rapido de nuestra aplicación.
- No necesitamos programar un panel de administración para subir las fotos.
- No es necesario actualizar las dos partes, pues solo actualizando en Facebook tambien se actualiza en nuestro sitio.
- Ideal para mostrar fotos a usuarios que no forman parte de dicha red social
Y esas son algunas de las ventajas, espero les haya servido este pequeño tutorial que apliqué a Kilometro X, puedes descargar el ejemplo.
Has llegado a este artículo buscando:
- extraer fotos de facebook
- galeria de fotos de facebook en tu web
- mostrar galerias de imagenes de facebook en mi sitio web
- mostrar galerias de facebook
- caso luis carlos cardenas
- fotos de album facebook api
- galeria de fotos album facebook page
- php galeria facebook
- api facebook para subir imagenes php
- extraer galeria facebook


















queria saber si se puede obtener el listado de fans, o como minimo los avatares de unos cuantos usuarios en modo aleatorio
Ya has leído la documentación del api de facebook. Aqui viene toda:
http://developers.facebook.com
Lo que tu pides, no se puede realizar con el API. de hecho ni siquiera al entrar a la fan page puedes ver los usuarios que les gusta dicha pagina, solo a tus amigos que les gusta.
Me gusto mucho el Post, pero revisando lo que muestra el api, y el ejemplo que muestras, no salen las descripciones de las fotos, ¿Hay alguna forma de obtener las descripciones de cada foto?
Gracias.
Perdon, ya vi que si aparecen las descripciones de las fotos en el formato JSON, en name
, ahora sólo tengo que buscar la forma de incluirlos en el sexylightbox.
Una pregunta existira alguna forma de hacer ese api pero para todos los albunes de la fan page, en un solo api?
Excelente… la linea para la foto dentro del foreach la coloqué así:
<a rel="sexylightbox[kmx]" title="name;?>" href="source;?>"><img title="name;?>" src="picture;?>" />Además le agregué paginación así:
En la primera parte agrego:
if ($_GET["url"]==""){
$urlface="https://graph.facebook.com/140387082653939/photos?limit=30";
}else{
$urlface=$_GET["url"];
}
luego cambio:
CURLOPT_URL => $urlface,<?php
echo("");
if (($paginas->previous)==""){
echo("Página Anterior");
}else{
echo("previous)."\">Página Anterior");
}
echo(" ");
if (($paginas->next)==""){
echo("Página Siguiente");
}else{
echo("next)."\">Página Siguiente");
}
echo("");
?>
Olvidé decir que al final de la primera parte, para la páginación hay que agregar:
$paginas = $galeria->paging;y que el último código va al final de la página.
necesito poner todo los albunes de fotos de un fans page en una pagina, como lo hago??
Hay una parte donde menciono como obtener el ID del album de fotos que queremos extraer, esa tambien sirve para obtener todas las galerías, da esta URL
https://graph.facebook.com/ID_FANPAGE/albums
Solo sustituye el ID_FANPAGE y te aparecerá el listado de todos tus albums.