Scrivere applicazioni Facebook in Perl (parte 1)

| No Comments

Questa è la traduzione di questo mio articolo in inglese.

Quindi volete scrivere un'applicazione per questo social network controverso ma abbondantemente utilizzato. La buona notizia è che potete usare che linguaggio vi pare per fare ciò, poiché le applicazioni per Facebook risiedono su un server di vostra scelta e si tratta semplicemente di configurare FB affiché mappi l'applicazione alla URL sul vostro server.

I linguaggi più comunemente utilizzati per estendere Facebook sono FBML (un linguaggio di markup da inserirsi direttamente nella pagine che si creano) e PHP. Noi utilizziamo il nostro preferito, cioè Perl.

Questo breve articolo illustra come creare qualcosa di molto semplice. Spero che comunque questo post diventi semplicemente la prima parte di una serie di articoli dove possiamo sviluppare applicazioni più complesse.

Prima di tutto è necessario compiere qualche operazione su Facebook.

Se guardate in fondo ad una pagina qualsiasi del network, trovate un piccolo link "Developer" (NB: io utilizzo Facebook in inglese, quindi in italiano le diciture saranno chiaramente un po' diverse) assieme ad una serie di altri link. Cliccate su di esso e vi trovate in una pagina introduttiva per sviluppatori. Cliccate sul grande bottone rosso con scritto "Start building for your site": vi verrà chiesto di inserire l'URL del vostro sito web e di caricare un file HTML in esso (in modo da verificare che ne abbiate il controllo). È probabilmente una buona idea dedicare un dominio virtuale all'applicazione.

Cliccate ora sul link "Developer dashboard" nella zona gialla della pagina, accettare l'applicazione Developer: ora è tutto configurato per gestire la propria applicazione (nonché crearne altre, rimuoverle, ...). L'applicazione creata è gestibile all'indirizzo:

http://www.facebook.com/developers/

Se date un'occhiata a questa pagina, troverete le API keys ed altri dati relativi all'applicazione. Il codice di esempio è (toh!) in PHP, ma di seguito trovate un esempio che utilizza Perl.

Prima di tutto, clicca su Edit Settings all'interno della vostra applicazione e portatevi sul tab Canvas. I primi due campi di questo tab rappresentano le parti dell'URL che volete appaia su Facebook ( Canvas Page URL ) e la URL dell'applicazione sul vostro web server ( Canvas Callback URL ): Facebook mappa la prima URI alla seconda, quindi queste vanno configurate correttamente. Nello stesso tab, configurate anche il Render Method a FBML: gli esempi qui riportati necessitano di questa impostazione per funzionare correttamente.

Il vostro sito è ora "connesso" a Facebook e sia voi chee i vostri utenti potete ora accede all'applicazione tramite:

http://apps.facebook.com/your_canvas_page_name/

Questo è tutto per la parte indipendente dal linguaggio. Ci sono in realtà un sacco di altre opzioni di configurazione: potete darci un'occhiata oppure leggerne la documentazione. Le utilizzeremo probabilmente in articoli futuri.

La forma più semplice dell'applicazione Perl è:

use Modern::Perl;
use CGI::Simple;
my $q = CGI::Simple->new();

print $q->header();
print "Ciao Facebook";

Accedendo alla Canvas Page URL vedrete la scritta Ciao Facebook all'interno delle solite decorazioni del social network.

Proviamo ora a scrivere qualcosa solo un pelino più complesso, che vorrebbe mostrare i nomi degli amici dell'utente che utilizza l'applicazione. Abbiamo bisogno di un modulo CPAN, il comodo WWW::Facebook::API di David Romano. Questa libreria fornisce un wrapping Perl attorno all'API di Facebook.

use Modern::Perl;
use CGI::Simple;
use WWW::Facebook::API;
#use Data::Dump qw/dump/;

my $q = CGI::Simple->new();
my $fb = WWW::Facebook::API->new(
    desktop => 0,
    api_key => 'your_api_key',
    secret  => 'your_secret_key',
    query   => $q,
);

# UTF-8 non funziona così bene con Facebook, usiamo utf8
print $q->header(
    -charset    => 'ISO-8859-1',
);

# FBML per mostrare nome dell'applicazione, etc
print '<fb:header/><div>';

# Questo stampa il codice FBML per redirigiere alla pagina di aggiunta
# dell'applicazione nel caso essa già non sia tra quelle dell'utente
$fb->require_add() and exit;

# Ottiene parametri del canvas (utente corrente, ...)
my $params = $fb->canvas->validate_sig();
# print dump $params; # Have a look at these

# Imposta la session key a quella passata da Facebook
$fb->session_key( $params->{session_key} );

print '<h3>Prima Applicazione Facebook</h3><br />';

# Ottiene gli amici dell'utente loggato (ritorna un array di uid)
my $user_friends = $fb->friends->get();

# Ottiene i campi che ci interessano (il nome) degli amici dell'utente
my $friends_info = $fb->users->get_info(
    uids    => $user_friends,
    fields  => [qw/ name /],
) // [ ];

# Stampa in forma "gradevole"
print '<h4>Your friends (' . @$friends_info . ')</h4><br />';
print '<ul><li>';
print join '</li><li>', sort map { $_->{name} } @$friends_info;
print '</li></ul>';

print '</div>';

# Libera la session key (utile se siamo in ambiente persistente)
$fb->session_key(undef);

Il codice mostrato mostra all'utente collegato, una vota che egli/ella ha aggiunto (autorizzato) l'applicazione (non necessario se siete autori dell'applicazione, ma provate ad utilizzare un account FB diverso...), con la lista dei suoi amici ordinata alfabeticamente.

Beh,. per oggi basta. ;-)

Leave a comment

About this Entry

This page contains a single entry by Michele Beltrame published on January 1, 2010 9:20 AM.

Installare un'applicazione Catalyst con FastCGI su Apache o lighttpd was the previous entry in this blog.

Sympa version 6 is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.

Categories

Pages

OpenID accepted here Learn more about OpenID
Powered by Movable Type 5.14-en