Flavio's blog

Di tutto di più, il blog del sito flapane.com

HOWTO: Utilizzare le API di Facebook nel vostro sito web – un esempio pratico

facebook api HOWTO: Utilizzare le API di Facebook nel vostro sito web   un esempio pratico

Volendo facilitare la vita a coloro i quali volessero firmare la nuova versione del Guestbook, ho pensato di provare ad inserire un metodo per compilare automaticamente tutti i campi del nuovo Guestbook (tranne quello dove scrivere il commento vero e proprio icon smile HOWTO: Utilizzare le API di Facebook nel vostro sito web   un esempio pratico ) tramite il log-in col proprio account di Facebook (che io però non utilizzo, ndr).

Prima di tutto bisogna registrarsi per ottenere una chiave API di Facebook all’indirizzo developers.facebook.com. Bisogna creare una nuova applicazione Web, darle un nome, ed inserire l’indirizzo del proprio sito nei campi “App Domains” e “Website with Facebook Login”.

Poi scaricate l’SDK per comunicare con Facebook via PHP da github a questo indirizzo, e caricatelo sul server FTP.

Create un nuovo file PHP e copiate al suo interno questo codice che ho scritto, per loggarsi tramite Facebook:

<?
//Facebook SDK and PHP, a pratical example for parsing Name,email,web address and avatar of an user. Code by flapane.com
require "facebook/facebook.php";
$facebook = new Facebook(array(
    'appId'  => YOURAPPID,
    'secret' => YOURSECRETID,
));

$user = $facebook->getUser();

if ($user) {
  try {
    $user_profile = $facebook->api('/me');

      $fbname = $user_profile['name'];
      $fblink = $user_profile['link'];
      $fbmail = $user_profile['email'];
      $fbid = $user_profile['id']; //per l'avatar utente
  } catch (FacebookApiException $e) {
    // The access token we have is not valid
    $user = null;
  }
}

if ($user) {
      $logoutUrl = $facebook->getLogoutUrl();
      $access_token = $facebook->getAccessToken();
      $logout_landing_page = "http://www.yourwebsite.com/index.php";
      $logout_url = "https://www.facebook.com/logout.php?access_token=".$access_token."&confirm=1&next=".$logout_landing_page;
    } else {
      $loginUrl = $facebook->getLoginUrl();
    }
?>
<?php 
if (!$user): ?>
   <div id="fb-root" style="display:none"></div>
    <script language="javascript" type="text/javascript"> //modifica per validazione w3c
//<![CDATA[
document.write('<fb:login-button size="medium" scope="email">Login with/Accedi con Facebook</fb:login-button>');
//]]>
    </script>
<?php endif ?>
    <script type="text/javascript">
      window.fbAsyncInit = function() {
        FB.init({
          appId      : '<?php echo $facebook->getAppID() ?>',
          status     : true, 
          cookie     : true,
          xfbml      : true,
          oauth      : true,
        });

        FB.Event.subscribe('auth.login', function(response) {
          window.location.reload();
        });
      };

      (function(d){
         var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
         js = d.createElement('script'); js.id = id; js.async = true;
         js.src = "//connect.facebook.net/en_US/all.js";
         d.getElementsByTagName('head')[0].appendChild(js);
       }(document));
    </script>
<? if ($user) {
echo "<img src='http://graph.facebook.com/$fbid/picture' title='Sei loggato come/Logged in as $fbname' alt='Sei loggato come/Logged in as $fbname' /><br /><a href='$logout_url'><img src='facebook/facebook-logout-button.png' title='Logout' /></a>"; //mostra avatar utente e logout button
}
?>

Sostituite a YOURAPPID e YOURSECRETID le chiavi che avete ottenuto da Facebook for Developers, salvate e caricate la pagina PHP appena creata.

Aprendola, vi verrà chiesto di effettuare il login tramite Facebook (ed apparirà il pop-up che elencherà le autorizzazioni richieste). Effettuato il log-in, sarete in possesso dei dati dell’utente (oltre che dell’avatar, che apparirà direttamente nella pagina, una volta effettuato il log-in).

I dati (nome, sito web, email ed avatar) sono contenuti nelle variabili:

$fbname = $user_profile['name'];
$fblink = $user_profile['link'];
$fbmail = $user_profile['email'];
$fbid = $user_profile['id']; //per l’avatar utente

A quel punto, potrete utilizzarli come meglio volete (per esempio, per compilare automaticamente i campi del Guestbook).

E voi utilizzate Facebook o altri social network per facilitare l’accesso al vostro sito? Che metodo avete utilizzato?

oknotizie HOWTO: Utilizzare le API di Facebook nel vostro sito web   un esempio pratico facebook HOWTO: Utilizzare le API di Facebook nel vostro sito web   un esempio pratico share save 120 16 HOWTO: Utilizzare le API di Facebook nel vostro sito web   un esempio pratico

Scritto da flapane il 4 giugno 2012 in Webdesign, Web 2.0 & SEO | Tags: , , , | 18 Commenti »
Puoi rimanere aggiornato e leggere tutte le risposte attraverso il feed RSS 2.0, e puoi lasciare un commento, o un trackback (backlink) dal tuo sito.

  • Pingback: HOWTO: Guestbook/comment-system in AJAX e PHP con un pizzico di… Twitter | Flavio's blog

  • Giacomo

    non funziona, Parse error: syntax error, unexpected T_STRING, expecting ‘)’ in/membri/miosito/login_facebook.php on line 7, e ho fatto copia-incolla

    • http://www.flapane.com/ flapane

      Funziona, funziona, visto che lo uso nel mio guestbook. Non mi hai detto neanche cosa è login_facebook.php, e cosa c’è alla riga 7… se mi dai ulteriori dettagli proviamo a vedere.

      • Giacomo

        ho copiato e incollato il tuo codice in un file php di nome login_facebook.php, incluso nell’index

        • http://www.flapane.com/ flapane

          Essendoci alla 7 il campo per il secretid, probabilmente devi aver commesso qualche errore nel sostituire il codice segreto al posto di YOURSECRETID

          es: ‘secret’ => f43igigfqgfqjhgfjkfgqwk,

          • Giacomo

            ci ho semplicemente copiato l’App Secret cosi come me lo da facebook

          • http://www.flapane.com/ flapane

            L’errore è a forza lì, perchè l’esempio di sopra te l’ho copiato direttamente dal mio guestbook, ovviamente sostituendo alla chiave segreta reale, una inventata. Controlla bene… una virgola, una parentesi, in genere sono gli errori più comuni. Magari hai dimenticato la virgola alla fine della chiave. D’altra parte, se qui funziona, non può esserci altra motivazione che un errato inserimento del codice segreto.

          • Giacomo

            c’e’ la virgola, Error
            App Domains: http://miodominio.altervista.o… should not contain protocol information. mi da questo errore quando inserisco il mio dominio nell’applicazione su facebook, ma non credo dipenda da questo, quello e’ un errore sintattico

          • http://www.flapane.com/ flapane

            Alla fine hai risolto?

          • giacomo

            si ma non con questo codice, l’errore chissa’ dov’era, sicuramente colpa mia, grazie cmq per l’aiuto

          • Giacomo

            c’e’ la virgola, Error
            App Domains: http://miodominio.altervista.org should not contain protocol information. mi da questo errore quando inserisco il mio dominio nell’applicazione su facebook, ma non credo dipenda da questo, quello e’ un errore sintattico

          • http://www.flapane.com/ flapane

            Infatti, è un errore sintattico, ma quella esatta per la linea 7 è quella postata appena sopra, ovvero
            ‘secret’ => f43igigfqgfqjhgfjkfgqwk,

  • http://www.facebook.com/sergiodario.martina Sergio Dario Martina

    Bello, funziona alla grande!!

    • http://www.flapane.com/ flapane

      Ottimo, mi fa piacere!

      • http://www.facebook.com/sergiodario.martina Sergio Dario Martina

        L’unico dubbio che mi rimane però è che io non vorrei che chi piomba sul
        sito da una pagina esterna e che ha una sessione attiva del browser su
        facebook si logghi in automatico, vorrei che facesse sempre il login dal
        pulsante, ho settato a false il valore cookie, riga 48 dell’esempio, ma poi non funziona più :(

        • http://www.flapane.com/ flapane

          Aspetta, non è possibile che chiunque sia loggato su Facebook sia loggato anche qui, perchè per loggarsi è necessario richiedere l’autorizzazione all’App, tramite il pop-up che appare quando si clicca su LOGIN.
          Tuttavia, se qualcuno si è loggato precedentemente nell’App (tramite le API di FB), il cookie provvederà al login automatico. Non ho mai fatto esperimenti per variare la scadenza del cookie o eliminarlo del tutto, quindi al momento non saprei darti ulteriori spiegazioni in merito.

          • http://www.facebook.com/sergiodario.martina Sergio Dario Martina

            Eh eh, hai ragione, ho detto una sciocchezza, effettivamente funziona come dici tu, ho fatto un po di confusione. Grazie mille, la tua guida mi è stata molto utile. Ciao :)

          • http://www.flapane.com/ flapane

            Alla prossima!