Si vuole realizzare una pagina in php dove l’utente può
inserire una propria foto che verrà caricata in un album
prestabilito di una Pagina Facebook di cui si hanno i permessi di gestione. Un
ipotetico scenario può essere una pagina di un concorso basato su foto caricate dagli utenti.
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, Id dell'album
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.
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 i due permessi fondamentali:
manage_pages insieme al public_actions. 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 possono selezionare i due permessi indicati.
Una volta fatto ciò è necessario recuperare il token per la
pagina di riferimento alla quale si vogliono aggiungere delle foto. Sempre
attraverso il tool (Graph Explorer) si può recuperare il token 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.
A questo punto manca un’ultima informazione: l’album all’interno
del quale andranno a finire le foto caricate dagli utenti attraverso la pagina
PHP. Il dato che permette la sua identificazione è l’id che facebook gli ha
assegnato al momento della creazione (che si può fare direttamente dalla
gestione della pagina). Esso può essere recuperato sempre attraverso il tool
con il campo albums.
Una precisazione:
Prima di procedere bisognare fare una precisazione: un token
ha una durata e potrebbe scadere e non permettere più l’upload delle foto.
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.
Codice sorgente:
A questo punto si creano due file:
- index.html: all’interno del quale vi sarà il modulo in cui l’utente potrà allegare la foto e inserirne una descrizione.
- uploadfb.php: all’interno del quale vi sarà il codice per la gestione dell’invio dei dati attraverso le Graph API di Facebook.
Il codice del primo file è semplice:
<html>
<head>
<title>Upload su
Facebook</title>
</head>
<body>
<form method="post"
action="uploadfb.php" enctype="multipart/form-data">
<label>Descrizione
foto:</label>
<input
type="text" name="desphoto" />
<br/>
<label>Carica
la tua foto:</label>
<input type="file"
name="userphoto" />
<br />
<input type="submit"
value="Carica" />
</form>
</body>
</html>
Per quanto riguarda il file php il codice sarà:
<?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' );
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookRequestException;
use Facebook\FacebookPermissionException;
use Facebook\FacebookSDKException;
use Facebook\GraphObject;
use Facebook\FacebookResponse;
$APP_ID=’INSERIRE L’APP ID’;
$APP_SECRET=’INSERIRE L’APP SECRET’;
$PAGE_TOKEN='INSERIRE IL TOKEN DELLA
PAGINA';
$ALBUM_ID=’INSERIRE L’ALBUM ID’;
if(isset($_FILES['userphoto']))
{
$file = $_FILES['userphoto'];
if($file['error'] ==
UPLOAD_ERR_OK and is_uploaded_file($file['tmp_name']))
{
$fileToSend=$file['tmp_name'];
print_r($fileToSend);
}
}
if(isset($_POST['desphoto']))
{
$desphoto=$_POST['desphoto'];
}
FacebookSession::setDefaultApplication($APP_ID,$APP_SECRET);
$session =
new FacebookSession($PAGE_TOKEN);
if($session)
{
try
{
$response = (new FacebookRequest(
$session, 'POST',
'/'.$ALBUM_ID.'/photos', array(
'source' => new
CURLFile(realpath($fileToSend), 'image/jpg'),
'message' => $desphoto,
)
))->execute()->getGraphObject();
echo
"Foto caricata con id: " . $response->getProperty('id');
}
catch(FacebookRequestException
$e)
{
echo "Errore, codice: " . $e->getCode();
echo " con messaggio: " . $e->getMessage();
}
}
?>
0 commenti:
Posta un commento