BigThink

Come sviluppare Applicazioni Facebook in locale

Uno dei principali problemi che si riscontrano nello sviluppare Applicazioni Facebook — in particolare quelle FBML – è l’impossibilità di testarle in locale.

Uno sviluppatore alle prime armi cosa fa? Inizia a creare la sua Applicazione direttamente sul server remoto, uploadando i file via FTP ad ogni singola modifica. Un vero suicidio! E’ impossibile sviluppare in questo modo e allunga un sacco i tempi.

Potresti allora essere tentato di impostare http://localhost/ (piuttosto che http://127.0.0.1/) come indirizzo della tua Applicazione nelle impostazioni. Forse può funzionare per le Applicazioni Iframe, ma ovviamente non va bene nel caso di App FBML, in quanto Facebook non ha accesso alla tua macchina.

Per fortuna ci sono diverse soluzioni:

Io ho scelto la terza soluzione, funziona perfettamente e ora ti spiegherò come ho fatto (dò per scontato che tu abbia già installato in locale un server Apache+MySQL+PHP, ad esempio).

1. Crea il DNS dinamico

Cos’è un Dynamic DNS? Si tratta di un servizio che tiene traccia dell’indirizzo IP della tua macchina locale e redirige il traffico di un dominio verso tale IP. Risulta molto utile nel caso il tuo Internet Service Provider ti assegni un nuovo IP ogni volta che ti connetti.

Per prima cosa, quindi, registrati gratuitamente su DynDNS, uno dei siti che offre questo servizio. La versione Free andrà benissimo:

  • Inserisci un nome per il tuo sottodominio.
  • Seleziona il dominio di secondo livello che ti piace di più.
  • Lascia selezionato “Host with IP address”.
  • Inserisci il tuo attuale indirizzo IP.
  • Procedi.

E’ tutto gratis, non ti verrà chiesta alcuna carta di credito.

2. Tieni aggiornato il DNS

Affinchè il tuo nuovo DNS rimanga sempre aggiornato con il tuo indirizzo IP, devi scaricare un software che mandi un ping ogni TOT minuti: DynDNS Updater.

Scaricalo, installalo e configuralo con i tuoi dati di login.

3. Conosci te stesso (e la tua rete)

Se tutto va bene, accedendo al DNS (ad esempio http://pippo.is-a-geek.com) verrai ora collegato all’IP della tua macchina.

Se, come me, sei connesso ad Internet tramite un router, ti comparirà il pannello di accesso. Questo perchè avrai l’IP esterno che si riferisce al router, mentre ogni singolo computer connesso alla rete avrà un IP interno. In questo caso, non resta che impostare su quale computer girare la richiesta.

4. Buca il Firewall del tuo router

Ora, infatti, devi dire al router di redirigere tutto il traffico che arriva sulla porta 80 (quella dell’http) verso l’IP del tuo computer:

  • Per prima cosa verifica l’IP interno con un ipconfig da Prompt dei comandi: il tuo IP sarà probabilmente qualcosa tipo http://192.168.0.2/.
  • Accedi alle impostazioni del tuo router (nel mio caso accessibili tramite browser a http://192.168.0.1/).
  • Configuralo seguendo le istruzioni che trovi su questo sito, in base al modello del tuo router.

Qui trovi, ad esempio, la configurazione corretta per il mio router Netgear DG834G: in sostanza devi creare un servizio sulla porta 80 e impostare una regola nel Firewall del router, in modo che il traffico venga rimandato all’IP http://192.168.0.2/.

5. Buca il Firewall del tuo computer

In teoria ora, facendo accesso a http://pippo.is-a-geek.com chiunque dovrebbe poter vedere il contenuto del tuo localhost. Se così non fosse, può essere dovuto al tuo Firewall.

Accedi ad esso, crea una regola per Apache e apri la porta TCP numero 80.

Fatto!

6. Ancora non funziona?

Se continui ad avere problemi (visualizzi una pagina bianca, piuttosto che continua a mostrarti sempre il pannello di accesso al router), puoi seguire questa soluzione:

  • Accedi alle impostazioni di Apache (file httpd.conf) e fallo girare su una porta diversa dall’80 (8000 ad esempio).
  • Torna alle impostazioni del router e esegui la procedura del punto 4, redirezionando però il traffico della porta 8000.
  • Accedi al tuo DNS specificando la porta (es: http://pippo.is-a-geek.com:8000) e stavolta dovresti vedere il tuo localhost!

Ancora niente? Ma sei sicuro di aver avviato Apache, vero??

Io ho riscontrato un ulteriore problema: accedendo al mio IP locale (http://192.168.0.2/) non vedevo il localhost (a cui invece si può accedere anche via http://127.0.0.1/), quindi lo stesso accadeva accedendo dal DNS.

Ho risolto con una soluzione estrema: nel file httpd.conf, oltre a cambiare la porta ho cambiato anche l’IP! Ho impostato:

Listen 192.168.0.2:8000

Non so se sia una mossa legittima e ve la consiglio come ultima risorsa, fatto sta che finalmente ha funzionato!

7. Imposta l’Applicazione Facebook

Inutile dire che ora come Canvas Callback URL dovrai impostare il tuo DNS (con tanto di porta, se diversa dalla 80). Quindi nel nostro esempio: http://pippo.is-a-geek.com:8000.

Ora potrai finalmente sviluppare la tua Applicazione in locale! Ogni modifica che farai sarà aggiornata in tempo reale!

Ovviamente, finchè il tuo pc è acceso, Apache è avviato ed il DynDNS Updater funzionante, chiunque potrà accedere all’Applicazione dall’esterno!

Se avete problemi e non vi funziona nulla, non chiedete a me stavolta!! Non me ne intendo assolutamente di IP, router e Co. e non sono un sistemista: già tanto che sono riuscito a districarmi in tutto questo macello.

Ho comunque voluto scrivere questa guida per chi ha avuto i miei stessi problemi.

Fonte: Lullabot

Articolo scritto da Ghido

Fondatore di BigThink.it, si occupa dello sviluppo e del coordinamento dei progetti tecnologici. Specializzato nel Marketing su Facebook e nello sviluppo di Applicazioni Social, fa consulenza e formazione ad aziende ed agenzie.

Leggi anche...

Facebook trick: aggiungere una Pagina Fan ai bookmark in home

Facebook trick: aggiungere una Pagina Fan ai bookmark in home

Se amministri una o più Pagine Fan su Facebook, ti sarai certamente accorto di un difetto di usabilità: ogni volta che vuoi andare sulla tua Pagina, devi cercarla nel box di ricerca di Facebook! A meno che non la inserisci nei bookmark/preferiti del tuo browser, non c'è modo di inserire un link direttamente accessibile ...
Hosting gratuito per le tue Applicazioni Facebook!

Hosting gratuito per le tue Applicazioni Facebook!

La principale preoccupazione di chi sviluppa Applicazioni Facebook è quella di trovare un buon server che possa gestire tutte le richieste, sopportare il traffico ed essere scalabile. Il problema è che un server costa e, se ci stiamo avvicinando al mondo della programmazione Facebook per la prima volta, sarebbe utile avere uno spazio di ...
Come ho creato un'Applicazione Facebook virale!

Come ho creato un’Applicazione Facebook virale!

L'ultima Applicazione Facebook sviluppata per EMP Mailorder Italia è stata un successo inaspettato! Lanciata nel periodo pasquale, EMP Eggs ha superato i 12.000 utenti in appena 2 settimane! Non male, per un'app volta a fare Brand su Facebook, no? Ma cos'è EMP Eggs? EMP Eggs: come funziona EMP Eggs è un gioco/concorso che permette ai partecipanti di ...
Quando Facebook ti disabilita l'Applicazione...

Quando Facebook ti disabilita l’Applicazione…

Promuovere la propria attività su Facebook è spesso molto efficace e può portare ad ottimi risultati, se si sanno utilizzare gli strumenti giusti corredati da una buona strategia. Devi però ricordare che stai giocando in casa d'altri. Quando si tratta di Facebook, non bisogna mai dare nulla per scontato. Puoi aver ideato il concorso ...
Come creare Dialog Box nelle tue Applicazioni Facebook IFrame

Come creare Dialog Box nelle tue Applicazioni Facebook IFrame

Uno degli aspetti positivi nello sviluppare Applicazioni Facebook FBML è che puoi usare FBJS, che mette a disposizione alcuni oggetti molto comodi come le Dialog. Grazie ad esse possiamo far comparire i classici popup in stile Facebook, con una riga di codice. Passando, però, a sviluppare Applicazioni IFRAME — e pare che Facebook stia ...

6 Commenti

  1. maffi

    Credo che sia comunque impossibile per gli utenti di fastweb, vero?
    Io ho sempre sviluppato su un server apparte :(

    4 giugno 2010, 18:16
    • Sì, penso che per Fastweb ci siano ulteriori problemi. Se non sbaglio, siete tutti sotto lo stesso IP…

      7 giugno 2010, 13:59
  2. Per quanto riguarda il file httpd.conf credo tu abbia fatto bene e penso sia un passaggio obbligato da compiere. In pratica l’ indirizzo locale è un indirizzo che permette ad una macchina non connessa di far comunicare fra loro programmi che in realtà sono stati creati per comunicare tramite la rete. Credo che il localhost possa essere visto come un indirizzo ip di una scheda di rete virtuale. Nel dare questa definizione sicuramente mi sbaglio ed inviti chi ne sapesse di più a correggermi :D

    29 maggio 2010, 02:16
    • Strano che però nessuna guida ne parlasse… Davano per scontato che accedere via browser a localhost o all’ip interno desse lo stesso risultato…. mah…

      29 maggio 2010, 10:26
  3. Ma per visualizzare l’ applicazione bisogna andare sempre su http://apps.facebook.com/nomeapplicazione/ o sbaglio ? Se si inserisce il localhost la pagina non va in loop ?

    29 maggio 2010, 01:59
    • Certo, poi richiami l’applicazione esattamente come al solito. Se richiami il localhost, non passi da Facebook!

      29 maggio 2010, 10:20

3 Citazioni