- Non si ha la necessità di realizzare nessuna pagina riservata dove predisporre il caricamento di foto
- Le foto hanno una visibilità in un social network di rilievo
- Possibilità di includere elementi social come i "Mi Piace" insieme agli eventuali commenti, etc
- Gestione delle foto centralizzata su Facebook e sincronizzata in maniera automatica
- Non si deve avere uno spazio web dove salvare le proprie foto
Per sfruttare questi enormi vantaggi è sufficiente effettuare delle operazioni preliminari sulla propria pagina Facebook rendendola accessibile dall'esterno solo per l'applicazione che si sta realizzando.
Premessa: Il cuore della programmazione Facebook è costituito dalle Graph API che permettono ai developer di accedere alle informazioni associate a qualsiasi entità (persona, pagina, etc).
Per sfruttare al meglio questa possibilità esistono diversi linguaggi di programmazione per i quali sono state predisposte delle librerie ad hoc. Nella presente guida si farà riferimento al linguaggio PHP. Il pacchetto di librerie di php è scaricabile al seguente link:https://github.com/facebook/facebook-php-sdk-v4
La versione di riferimento è la 4 che richiede una versione di php maggiore o uguale alla 5.4
Recuperare APP ID, APP Secret, Page Token
Dopo aver scaricato l’SDK la prima operazione da eseguire è la registrazione come developer insieme alla registrazione dell’applicazione che si vuole realizzare:https://developers.facebook.com/apps
Questa operazione permetterà di ottenere due informazioni indispensabili: App ID, APP Secret.
Questa operazione permetterà di ottenere due informazioni indispensabili: App ID, APP Secret.
A questo punto, Facebook impone l’utilizzo di un token (letteralmente “Gettone”) che non è nient’altro che una stringa univoca attraverso la quale la pagina in php potrà autenticarsi. Nel caso in oggetto, si ha interesse ad avere un Token di accesso per la pagina. Per ottenerlo, bisogna partire da un User Access Token (come user si intende l’utente che è amministratore della pagina) chiedendo all’utente il permesso: manage_pages. Per fare ciò è sufficiente andare nella pagina di Facebook Graph Explorer dove si può selezionare l’applicazione che è stata appena creata e, cliccando su Get Access Token e poi nella scheda Extended Permissions si può selezionare il permesso indicato.
Una volta fatto ciò è necessario recuperare il token per la pagina di riferimento. Sempre attraverso il tool (Graph Explorer) lo si può recuperare selezionando il metodo GET e scrivendo nel campo correlato: me/accounts. Cliccando su Submit, si possono visualizzare tutte le pagina create dal profilo selezionato. A questo punto basta copiare il token della pagina che si vuole gestire attraverso l’applicazione e metterlo da parte, servirà in fase di creazione dello script in PHP.
Una volta fatto ciò è necessario recuperare il token per la pagina di riferimento. Sempre attraverso il tool (Graph Explorer) lo si può recuperare selezionando il metodo GET e scrivendo nel campo correlato: me/accounts. Cliccando su Submit, si possono visualizzare tutte le pagina create dal profilo selezionato. A questo punto basta copiare il token della pagina che si vuole gestire attraverso l’applicazione e metterlo da parte, servirà in fase di creazione dello script in PHP.
Una precisazione:
Un token ha una durata finita. Questo aspetto non verrà affrontato in questo articolo per non confondere il lettore. Per i dettagli si consiglia di consultare la documentazione fornita da Facebook.
Il file config.php
Come prima operazione è opportuno creare un file di nome config.php dove andranno tutti i dati necessari all’autenticazione, insieme ai richiami alle librerie di Facebook. Un esempio è mostrato al seguito:
<?php
require_once( 'Facebook/FacebookSDKException.php' );
require_once( 'Facebook/GraphObject.php' );
require_once( 'Facebook/FacebookRequestException.php' );
require_once( 'Facebook/FacebookAuthorizationException.php' );
require_once( 'Facebook/FacebookSession.php' );
require_once( 'Facebook/FacebookRequest.php' );
require_once( 'Facebook/FacebookRequestException.php' );
require_once( 'Facebook/GraphUser.php' );
require_once( 'Facebook/FacebookPermissionException.php' );
require_once( 'Facebook/FacebookResponse.php' );
$APP_ID=’INSERIRE L’APP ID’;
$APP_SECRET=’INSERIRE L’APP SECRET’;
$PAGE_TOKEN='INSERIRE IL TOKEN DELLA PAGINA';
?>
<?php
require_once( 'Facebook/FacebookSDKException.php' );
require_once( 'Facebook/GraphObject.php' );
require_once( 'Facebook/FacebookRequestException.php' );
require_once( 'Facebook/FacebookAuthorizationException.php' );
require_once( 'Facebook/FacebookSession.php' );
require_once( 'Facebook/FacebookRequest.php' );
require_once( 'Facebook/FacebookRequestException.php' );
require_once( 'Facebook/GraphUser.php' );
require_once( 'Facebook/FacebookPermissionException.php' );
require_once( 'Facebook/FacebookResponse.php' );
$APP_ID=’INSERIRE L’APP ID’;
$APP_SECRET=’INSERIRE L’APP SECRET’;
$PAGE_TOKEN='INSERIRE IL TOKEN DELLA PAGINA';
?>
Autenticazione e Request
A questo punto, grazie al config.php, l’autenticazione può essere effettuata con la classe FacebookSession. Successivamente sarà possibile effettuare una chiamata di tipo GET per recuperare tutti gli album nella pagina scelta. Le informazioni saranno incapsulate in un GraphObject, un oggetto a disposizione delle sviluppatore, che permetterà la navigazione facilitata in tutte le proprietà di esso.
<?php
require_once('config.php');
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookRequestException;
use Facebook\FacebookPermissionException;
use Facebook\FacebookSDKException;
use Facebook\GraphObject;
use Facebook\FacebookResponse;
FacebookSession::setDefaultApplication($APP_ID,$APP_SECRET);
$session = new FacebookSession($PAGE_TOKEN);
if($session)
{
try
{
$albumData = (new FacebookRequest($session, 'GET', '/me/albums'))->execute()->getGraphObject();
}
catch(FacebookRequestException $e)
{
echo "Errore, codice: " . $e->getCode();
echo " con messaggio: " . $e->getMessage();
}
}
?>
Recupero degli album
Effettuata la richiesta, manca solo la parte di gestione della risposta. Gli attributi recuperati dal GraphObject sono:
- id: l’id dell’album, sarà utile per accedere alle informazioni del singolo album
- cover_photo: immagine di copertina dell’album
- name: nome dell’album
Infine, ogni album è stato reso cliccabile in maniera tale da aprire in un’altra pagina tutte le foto al suo interno. Questa attività è racchiusa in un altro file di nome photoalbum.php
$albumsObject=$albumData->getProperty('data');
$arrayKeys=$albumsObject->getPropertyNames();
<?php
for($i=0;$i<count($arrayKeys);$i++)
{
$key=$arrayKeys[$i];
if($albumsObject->GetProperty($key)->GetProperty('cover_photo')!='')
{
$idAlbum=$albumsObject->GetProperty($key)->GetProperty('id');
echo '<a href="photoalbum.php?idalbum='.$idAlbum.'" ><li> <img src="https://graph.facebook.com/'.$albumsObject->GetProperty($key)->GetProperty('cover_photo').'/picture/" width="200" /> ';
echo $albumsObject->GetProperty($key)->GetProperty('name');
echo '</li></a>';
echo '<br/>';
}
}
?>
Recuperare le foto di un album
Per recuperare le foto di un album in particolare l’unica informazione utile è l’id. A tale scopo, nella proprietà HREF del tag A del precedente codice viene richiamata la pagina photoalbum.php passandolo come parametro. Il link alle foto che si vogliono visualizzare è contenuto nella proprietà di nome source.
A questo punto, omettendo il codice superfluo del file photoalbum.php si riporta il solo ciclo utile per recuperare tutte le foto e visualizzarle a video:
for($i=0;$i<count($arrayKeys);$i++)
{
$key=$arrayKeys[$i];
if($fotoAlbum->GetProperty($key)->GetProperty('id')!='')
{
echo '<li> <img src="'.$fotoAlbum->GetProperty($key)->GetProperty('source').'" width="200" /> ';
echo '</li>';
echo '<br/>';
}
}
Al codice mostrato non resta altro che aggiungere un valido CSS e la galleria di foto collegata ad una pagina Facebook è pronta. Qualsiasi modifica sulla pagina di Facebook si ripercuoterà in maniera automatica anche sul nostro sito in PHP.
for($i=0;$i<count($arrayKeys);$i++)
{
$key=$arrayKeys[$i];
if($fotoAlbum->GetProperty($key)->GetProperty('id')!='')
{
echo '<li> <img src="'.$fotoAlbum->GetProperty($key)->GetProperty('source').'" width="200" /> ';
echo '</li>';
echo '<br/>';
}
}
Al codice mostrato non resta altro che aggiungere un valido CSS e la galleria di foto collegata ad una pagina Facebook è pronta. Qualsiasi modifica sulla pagina di Facebook si ripercuoterà in maniera automatica anche sul nostro sito in PHP.
0 commenti:
Posta un commento