facebook snippet

Dopo aver realizzato la mia nuova applicazione facebook, Magic 8 Ball, ho deciso di pubblicare una serie di snippet di codice che ho usato per scrivere l’applicazione in modo da aiutare tutti coloro che vogliono programmare su facebook. Purtroppo infatti la documentazione ufficiale non è delle migliori e, nella maggior parte dei casi, è in inglese!
Ecco quindi alcuni snippet di codice grazie ai quali sarà possibile integrare la nostra app (scritta nei vari linguaggi di programmazione) con alcune funzioni tipiche di Facebook.
Iniziamo con quella più banale che ci permetterà di aggiungere alla nostra app il suo titolo. L’effetto finale sarà il seguente:

titolo

Ed ecco di seguito il codice necessario:

<fb:header>TITOLO DELLA NOSTRA APP</fb:header>

NOTA: Facebook mette a disposizione due metodi distinti per intefrare la nostra app nella sua interfaccia. Quello che abbiamo utilizzato per scrivere il titolo e che useremo anche nello step successivo è l’FBML che è una estensione del linguaggio HTML che facebook provvederà ad interpretare correttamente associandogli i tag HTML e gli stili appropiati.

Altro snippet, come accennato, sarà quello per aggiungere un tab menù alla nostra applicazione. Il risultato finale sarà il seguente:

tabs

Ed il codice necessario a visualizzare il menù è il seguente:

<fb:tabs>;
<fb:tab-item href="<?php echo $url; ?>;" title="Home" >?php echo ($page == 'index.php') ? 'selected="true"' : ''; ?>; />
<fb:tab-item href="<php echo $url; ?>;invite.php" title="Invita Amici" <?php echo ($page == 'invite.php') ? 'selected="true"' : ''; ?> />
<fb:tab-item href="http://www.PcExpert-blog.com/" title="PcExpert" align="right" />
</fb:tabs>

Altro aspetto tipico di una applicazine facebook è quello di pubblicare sulla bacheca dell’utente che la sta usando un messaggio, un’immagine, un link. Tutto questo possiamo farlo attraverso la funzione stream_publish. Tuttavia quest’ultima, per funzionare correttamente, ha bisogno che gli vengano assegnati i relativi permessi.
Per ottere tali permessi esistono 2 modi:

  • Il primo modo di ottenere i permessi necessari è attraverso un tag FBML appropiato. Ecco il codice:
  • &lt;fb:prompt-permission perms="read_stream,publish_stream"&gt; Ottieni i permessi per Magic 8 Ball&lt;/fb:prompt-permission&gt;

    Tuttavia questa opzione è poco consigliata perchè l’utente, per ottenere i permessi necessari, dovrà cliccare su un link che risulta molto meno visibile e immediato rispetto ad una finestra apposita generata col secondo metodo descritto nel prossimo step.

  • Per ottenere una finestra di richiesta permessi molto più visibile ed immediata occorre integrare nella nostra app una piccola porzione di codice in javascript. Ecco come si presenterà la finestra di richiesta permessi:
    Prompt_for_anything
  • Il codice da inserire sarà quindi il seguente:
    if(!$has_permission){
    $appurl="http://apps.facebook.com/the-magic-ball/";
    ?>
    
    <script>
    <!--
    Facebook.showPermissionDialog('publish_stream');
    
    //-->
    </script>
    

Ottenuti i permessi con uno dei due modi possiamo quindi passare a pubblicare un messaggio nella bacheca dell’utente. Ecco come al solito l’output e poi il codice necessario ad ottenerlo:

stream_publish

Codice:

$message = $messaggiobacheca; $attachment = array( 'name' => $risposte[$random], 'href' => 'http://apps.facebook.com/the-magic-ball/', 'caption' => '{*actor*} è soddisfatto/a della risposta ricevuta!', 'description' => 'Fai anche tu una domanda alla palla magica e lei ti fornirà tutte le risposte che vorrai! ', 'media' => array(array('type' => 'image', 'src' => 'http://www.PcExpert-blog.com/8ball/MY_DIR/8ball.png', 'href' => 'http://apps.facebook.com/the-magic-ball/')), 'latitude' => '41.4', 'longitude' => '2.19'); $action_links = array( array('text' => 'Fai una domanda anche tu!', 'href' => 'http://apps.facebook.com/the-magic-ball/'));
$attachment = json_encode($attachment);
$action_links = json_encode($action_links);
$facebook->api_client->stream_publish($message, $attachment, $action_links);
?>

Concludo infine questo breve excursion con la specifica finestra degli inviti attraverso la quale è possibile inviare una mail, a tutti gli utenti selezionati tramite apposito pannello, per invitarli a provare la nostra applicazione. Ecco un codice di esempio (in php) che ovviamente va modificato sostituendo i vari campi specifici con i link alla vostra app. Nella mia applicazione l’intero codice l’ho salvato in un file invite.php ed è possibile richiamare il menù attraverso l’apposito campo del tab menù.


$api_key = 'INCOLLA_QUI_IL_TUO';
$secret = 'INCOLLA_QUI_IL_TUO';
$app_name = "Magic 8 Ball";  //titolo della nostra app
$app_url = "http://apps.facebook.com/the-magic-ball/";  //url della nostra app
$invite_href = "invite.php";
require_once 'facebook.php';
$facebook = new Facebook($api_key, $secret);
require_frame(); $user = $facebook-&gt;require_login();
if(isset($_POST["ids"])) {
echo "Grazie per aver invitato ".sizeof($_POST["ids"])." dei tuoi amici ad usare <strong><a href="\">".$app_name."</a></strong>.

\n";
echo "
<a href="\">Click here to return to ".$app_name."</a>.
";
} else {
$fql = 'SELECT uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1='.$user.') AND is_app_user = 1';
$_friends = $facebook-&gt;api_client-&gt;fql_query($fql);
$friends = array();
if (is_array($_friends) &amp;&amp; count($_friends)) {
	foreach ($_friends as $friend) {
	$friends[] = $friend['uid'];
	}
	}
	$friends = implode(',', $friends);
	$content =
	" ha iniziato ad usare <a href="\">".$app_name."</a> e pensa che sia molto divertente!\n"."get_add_url()."\" label=\"Prova anche tu ".$app_name." e aggiungila al tuo profilo\"/>";
	?>

L’output del menù sarà il seguente:

invite
Vi invito quindi a provare la mia applicazione d’esempio per farvi anche un’idea di come funzionano tutte le parti di codice trascritte nel post. Vai a The Magic Ball.






Altri articoli:

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

19 Comments

  1. [...] avervi parlarto di come ho realizzato la mia seconda applicazione per facebook, the Magic 8 Ball, oggi vi spiegherò come integrare il [...]

  2. [...] Infine un altro progetto che ho realizzato in questo mese è stata la realizzazione di una applicazione per Facebook. Potete trovare maggiori info e post esplicativi al seguente indirizzo. [...]

  3. Mario scrive:

    ciao, sarei estremamente interessato ai codici per pubblicare e quello per invitare gli amici ma non riesco a capire dove inserirli ne se devono essere preceduti da stringhe che li attivino, premetto che di php non ne capisco niente ma potresti darmi una mano? grazie

    • Paolo Smedile scrive:

      Allora il codice per pubblicare sulla bacheca dell’utente che sta utilizzando l’app devi inserirlo nella pagina principale della tua app. (index.php). Ovviamente per potere pubblicare sulla bacheca degli utenti devi prima possedere i permessi necessari attraverso la chiamata Facebook.showPermissionDialog(‘publish_stream’); o tramite l’apposito tag FBML. Tutta la procedura è spiegata nell’articolo.

      Invece per quanto riguarda il form degli inviti esso va inserito in una pagina a parte(invite.php) che si può richiamare, per esempio, attraverso un apposito campo nel tab menù. (Vedi la mia app per farti un’idea).
      Ho modificato nuovamente il codice in modo che devi semplicemente sostituire i dati delle varie chiavi e url con quelli della tua app.
      Bye!

  4. Mario scrive:

    grazie, sei stato gentilissimo, proverò al più presto.

  5. Technotizie.it scrive:

    Tanti snippet di codice per integrare nella nostra applicazione facebook tutte le funzioni tipiche del social network…

    Dopo aver realizzato la mia nuova applicazione facebook, Magic 8 Ball, ho deciso di pubblicare una serie di snippet di codice che ho usato per scrivere l’applicazione in modo da aiutare tutti coloro……

  6. [...] e aggiungila al tuo profilo”/>”; ?>. L’output del menù sarà il seguente: invite. Vi invito quindi a provare la mia applicazione d’esempio per farvi anche un’idea di come funzionano tutte le parti di codice trascritte nel post. …Continue [...]

  7. Ric scrive:

    Ciao!..Sto cominciano a smanettare un po' con le applicazioni FB, ma la cosa è parecchio più complicata del previsto…

    Volevo chiederti, dal tuo utilissimo articolo, ho imparato a pubblicare sulla bacheca dell'utente che sta usando l'applicazione, ma se l'utente A (che ha installato la mia applicazione) vuole pubblicare qualcosa sulla bacheca dell'utente B come si fa ad ottenere il permesso di B?

  8. Antonio scrive:

    Ciao, ho seguito passo passo la tua guida ma ho un problema su come pubblicare i messaggi nella bacheca del mio utente. Se provo il metodo $facebook->api_client->stream_publish mi da un fatal error (giustamente) dicendo che non ho i permessi per pubblicare. Infatti eseguendo il metodo $has_permission = $facebook->api_client->users_hasAppPermission("publish_stream"); $has_permission è uguale a 0. Il mio problema e' che nel con il tag FBML ne con il metodo Javascript Facebook.showPermissionDialog('publish_stream'); succede qualcosa.

    • Paolo Smedile scrive:

      Ciao Attenzione che il plugin che gestisce il codice php ha fatto un po' di casini sostituendomi tutti i tag nei corrispettivi codici html! In giornata provvedo a correggere il tutto!

  9. Aldo scrive:

    ciao, volevo sapere se sai come far scegliere ad un utente gli amici su cui usare stream_publish
    in pratica vorrei che un utente selezionasse degli amici per poter scrivere sulla loro bacheca

  10. Puwne scrive:

    Complimenti per l'articolo avrei delle banalissime quanto importanti domande da porti, dato che io già mi sono creato il layout fbml della mia applicazione, con relativo tab inviti, vorrei appunto integrare i permessi speciali per poi andare ad integrare il pulsante pubblica nella index.php e quindi volevo provare le porzioni di codice da te citate ma non capisco, il tutto và racchiuso trà codice <php> ? o cosa?

    Chiedo aiuto grazie in anticipo.

  11. Puwne scrive:

    ok perfetto dato che hai messo a posto adesso provo e ti faccio sapere, un ultima domanda per realizare un botta e risposta simile al tuo, dove posso orientarmi?

  12. Puwne scrive:

    cosi:

    <code><?php if(!$has_permission){
    $appurl="http://apps.facebook.com/the-magic-ball/";
    ?>
    <script>
    <!–
    Facebook.showPermissionDialog('publish_stream');
    //–>
    </script> ?></code>

    • paul5488 scrive:

      senza il tag code…. l'ho scirtto nel commento perchè pensavo che wordpress mi interpretasse il codice php…
      Non ho capito bene la nuova domanda….di quale botta e risposta parli? Qui su PcExpert?

  13. Puwne scrive:

    Ovvero tu fai una domanda e lui ti risponde, io vorrei realizare una cosa simile, ma non uguale ovviamente, comunque il codice per il pop-up dei permessi mi genera un errore, mentre se inserisco quello a link funziona senza problemi. Vorrei solo capire comè strutturata l'applicazione e studiarmela cosi da mettere tutto al posto giusto. non sò se crei e vendi altrimenti ti chiederei di montarmela e pagartela. poi da li mi studierei tutto quanto.

  14. Puwne scrive:

    tranquillo, e rispetto l'autore dell'app, vorrei solo poter capire come crearmene una, ripeto anche senza passarmi il sorgente sono disposto ha pagare qualcosina purchè mi venga fatta una demo..

Lascia un commento