Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Index.php: selezioniamo gli amici

Utilizziamo gli strumenti offerti per creare uno script che mostra l'elenco di tutti i nostri amici con i loro nomi e selezionare tra tutti il destinatario di un regalo virtuale
Utilizziamo gli strumenti offerti per creare uno script che mostra l'elenco di tutti i nostri amici con i loro nomi e selezionare tra tutti il destinatario di un regalo virtuale
Link copiato negli appunti

Nella lezione precedente abbiamo introdotto in linea generale quello che la nostra applicazione dovrà fare. La prima cosa è scegliere tra tutti i nostri amici chi dovrà essere il destinatario del regalo.

Per fare ciò dovremo ottenere da Facebook gli user id degli amici dell'utente loggato. Ad esempio, se l'utente A ha come amici 1 e 2; e l'utente B ha come amici 3 e 4, l'esecuzione dello script da parte dell'utente A mostrerà gli utenti 1 e 2; l'esecuzione dello script da parte di B comporterà la visualizzazione degli utenti 2 e 3.

Per fare questo abbiamo due modi: le API o FQL. Come abbiamo visto precedentemente le API sono in molti casi dei "wrapper" di query FQL che ci semplificheranno di molto il lavoro e quindi le useremo immediatamente. Per poter utilizzare le API, però, bisogna importare la libreria Facebook (in realtà si tratta di importare il solo file facebook.php) all'interno del nostro script e inizializzarne il funzionamento.

Inserite questo codice all'inizio dello script:

require_once '../fb_engine/php/facebook.php';
$appapikey = 'MIO_API_KEY';
$appsecret = 'MIO_API_SECRET';
$facebook = new Facebook($appapikey, $appsecret);

Grazie all'handler $facebook, possiamo subito iniziare ad usare le API di cui abbiamo bisogno, ne useremo due, la prima require_login() mostrerà il contenuto della nostra pagina solo se l'utente che intende visualizzarla è attualmente loggato a Facebook, altrimenti lo script si interrompe e l'utente viene rimandato alla pagina di login ufficiale, se l'utente è loggato quest'API restituisce il suo uid:

$user_id = $facebook->require_login();

La seconda API che fa al caso nostro si chiama friend_get(), (questa è la pagina wiki ufficiale) e in basso è mostrato come noi la useremo all'interno del nostro script (da notare che in PHP friends.get() diviene friends_get()):

$uids = $facebook->api_client->friends_get();

la variabile $uids è in realtà un array che conterrà gli user id degli amici dell'utente che sta eseguendo lo script. Tutto quello che dovremo fare è iterare l'intero array, mostrando uno per uno tutti gli user id contenuti.

Per rendere il tutto più leggibile al posto dell'id numerico possiamo mostrare la foto e il nome dell'utente. Per fare questo ci vengono in aiuto due tag FBML: <fb:profile-pic> ed <fb:name>. Ecco come sarà realizzato il ciclo che avrà il compito di iterare sull'intero array $uids:

for ($i=0; $i<sizeof($uids); $i++)
{
     echo "<fb:profile-pic uid=".$uids[$i]." linked='false' size='square' /><br />";
     echo "<fb:name uid=".$uids[$i]." firstnameonly='true' />";
}

Il ciclo for è eloquente! Il tag <fb:profile-pic>, invece, mostrerà la foto del profilo dell'utente con uid uguale a $uids[$i], l'attributo linked impostato a false disabiliterà il collegamento ipertestuale che ci permetterebbe di visitare la pagina del profilo dell'utente cliccandone la foto. Concettualmente simile è il funzionamento del tag <fb:name>, l'attributo firstnameonly impostato a true farà sì che verrà mostrato solo il nome dell'utente, senza cognome.

Con un po' di conoscenza dell'HTML e del PHP possiamo rendere il tutto esteticamente più gradevole, sfruttando le tabelle ed utilizzeremo un radio button per permettere di scegliere un solo contatto tra tutti quelli che verranno mostrati, inoltre sarà presente un tasto "Avanti" che ci permetterà di andare allo script successivo, passando il codice uid dell'utente scelto. Questo è lo script completo:

<?
// importa libreria facebook
require_once '../fb_engine/php/facebook.php';
$appapikey = 'MIO_API_KEY';
$appsecret = 'MIO_API_SECRET';
// crea un'istanza di libreria
$facebook = new Facebook($appapikey, $appsecret);
// rendi il login obbligatorio
$user_id = $facebook->require_login();
// ottieni gli uid di tutti gli amici di $user_id
$uids = $facebook->api_client->friends_get();
// mostra un messaggio di benvenuto
echo "<h2><fb:application-name linked='false'/></h2>";
echo "<h4>Ciao <fb:name uid=".$user_id." firstnameonly='true' useyou='false' linked='false'/>, ";
echo "scegli tra i tuoi amici la persona a cui inviare un regalo:</h4><br />";
// crea il form "utenti"
echo "<form name='utenti' action='scegliRegalo.php' type='GET'>";
echo "<table id='users' width='100%'>";
// bottone "Avanti"
echo "<input type='submit' value='Avanti' />";
for ($i=0; $i<sizeof($uids); $i++)
{
    if ($i%10==0) // inizia ogni riga con un <tr>
        echo "<tr>";
    echo "<td width='10%'>";
    echo "<div align='center'>";
    // la variabile uid al conterrà lo uid del destinatario
    echo "<input type='radio' name='uid' value='".$uids[$i]."' /><br />";
    echo "<fb:profile-pic uid=".$uids[$i]." linked='false' size='square' /><br />";
    echo "<fb:name uid=".$uids[$i]." firstnameonly='true' />";
    echo "</div>";
    echo "</td>";
    if ($i%10==9) // ogni 10 contatti chiudi riga con </tr>
        echo "</tr>";
}
echo "</table>";
echo "</form>";
?>

Ti consigliamo anche