Mostrar los álbums y fotos de Facebook en tu web con PHP

La API Facebook Graph hace que sea muy sencillo el embeber los álbums de Facebook en tu sitio web. Puedes crear de forma sencilla una galería de fotos con los albums de Facebook y la API Graph. En este tutorial, veremos cómo mostrar los álbums de Facebook y sus fotos de una página de Facebook en tu sitio web con PHP.

¿Quieres extraer todas las fotos de tu página de Facebook y mostrarlas en tu sitio web utilizando la API Graph? Hay una forma de subir una foto a tu página de Facebook, y que se muestre directamente en tu sitio web.

En este artículo vamos a desarrollar un script PHP para obtener fotos de Facebook y mostrarlas mediante álbumes utilizando la API Graph. Lo mejor de esto es que la galería de imágenes según tus necesidades. Además, cuando subas una imagen a tu página de Facebook, se mostrará directamente en tu sitio web.

Antes de empezar, es necesario crear una aplicaciones de Facebook para obtener el App ID y la App Secret. Dichos datos los necesitaremos más adelante...

Obtener los álbumes de Facebook mediante PHP

En el fichero index.php, obtendremos las fotos de los álbumes de la página de Facebook que estén públicamente sin restricciones y las mostraremos en nuestro sitio web.

Antes que nada, debes especificar el App ID, en la variable $appId, y la App Secret, en la variable $appSecret, para generar el access token que utilizaremos en la API Graph. También tendremos que especificar el ID de la página de Facebook ($fb_page_id) para obtener todos sus álbumes.

<?php
if(!session_id()){
    session_start();
}

/*
 * Get access token using Facebook Graph API
 */
if(isset($_SESSION['facebook_access_token'])){
    // Get access token from session
    $access_token = $_SESSION['facebook_access_token'];
}else{
    // Facebook app id & app secret 
    $appId = 'InsertAppID'; 
    $appSecret = 'InsertAppSecret';
    
    // Generate access token
    $graphActLink = "https://graph.facebook.com/oauth/access_token?client_id={$appId}&client_secret={$appSecret}&grant_type=client_credentials";
    
    // Retrieve access token
    $accessTokenJson = file_get_contents($graphActLink);
    $accessTokenObj = json_decode($accessTokenJson);
    $access_token = $accessTokenObj->access_token;
    
    // Store access token in session
    $_SESSION['facebook_access_token'] = $access_token;
}

// Get photo albums of Facebook page using Facebook Graph API
$fields = "id,name,description,link,cover_photo,count";
$fb_page_id = "Insert_Facebook_Page_ID";
$graphAlbLink = "https://graph.facebook.com/v2.9/{$fb_page_id}/albums?fields={$fields}&access_token={$access_token}";

$jsonData = file_get_contents($graphAlbLink);
$fbAlbumObj = json_decode($jsonData, true, 512, JSON_BIGINT_AS_STRING);

// Facebook albums content
$fbAlbumData = $fbAlbumObj['data'];
?>

Recorre el contenido de los álbumes de la página de Facebook, y lista todos los álbumes con su foto principal, nombre y descripción.

<?php
// Render all photo albums
foreach($fbAlbumData as $data){
    $id = isset($data['id'])?$data['id']:'';
    $name = isset($data['name'])?$data['name']:'';
    $description = isset($data['description'])?$data['description']:'';
    $link = isset($data['link'])?$data['link']:'';
    $cover_photo_id = isset($data['cover_photo']['id'])?$data['cover_photo']['id']:'';
    $count = isset($data['count'])?$data['count']:'';
    
    $pictureLink = "photos.php?album_id={$id}&album_name={$name}";
    
    echo "<div class='fb-album'>";
    echo "<a href='{$pictureLink}'>";
    echo "<img src='https://graph.facebook.com/v2.9/{$cover_photo_id}/picture?access_token={$access_token}' alt=''>";
    echo "</a>";
    echo "<h3>{$name}</h3>";

    $photoCount = ($count > 1)?$count. 'Photos':$count. 'Photo';
    
    echo "<p><span style='color:#888;'>{$photoCount} / <a href='{$link}' target='_blank'>View on Facebook</a></span></p>";
    echo "<p>{$description}</p>";
    echo "</div>";
}
?>

Asociamos un enlace a cada álbum que redirecciona photos.php. En dicho archivo aprovecharemos para mostrar las fotos del álbum seleccionado.

Obtener las fotos del álbum de Facebook en PHP

En el archivo photos.php extraeremos todas las fotos del álbum seleccionado y las mostraremos en una galería. Antes que nada, obtenemos el album_id y el album_name de la url y el access token de la sesión. Después, solo queda extraer todas las imágenes del álbum de Facebook mediante la API Graph.

<?php
if(!session_id()){
    session_start();
}

// Get album id from url
$album_id = isset($_GET['album_id'])?$_GET['album_id']:header("Location: index.php");
$album_name = isset($_GET['album_name'])?$_GET['album_name']:header("Location: index.php");

// Get access token from session
$access_token = $_SESSION['facebook_access_token'];

// Get photos of Facebook page album using Facebook Graph API
$graphPhoLink = "https://graph.facebook.com/v2.9/{$album_id}/photos?fields=source,images,name&access_token={$access_token}";
$jsonData = file_get_contents($graphPhoLink);
$fbPhotoObj = json_decode($jsonData, true, 512, JSON_BIGINT_AS_STRING);

// Facebook photos content
$fbPhotoData = $fbPhotoObj['data'];
?>

Recorremos el contenido del álbum para mostrar las fotos.

<?php
// Render all photos
foreach($fbPhotoData as $data){
    $imageData = end($data['images']);
    $imgSource = isset($imageData['source'])?$imageData['source']:'';
    $name = isset($data['name'])?$data['name']:'';
    
    echo "<div class='fb-album'>";
    echo "<img src='{$imgSource}' alt=''>";
    echo "<h3>{$name}</h3>";
    echo "</div>";
}
?>

Fuente: codexworld

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP