﻿{"id":1014,"date":"2012-06-04T21:15:59","date_gmt":"2012-06-04T19:15:59","guid":{"rendered":"http:\/\/www.flapane.com\/blog\/?p=1014"},"modified":"2013-11-20T23:18:42","modified_gmt":"2013-11-20T22:18:42","slug":"howto-utilizzare-le-api-di-facebook-nel-vostro-sito-web-un-esempio-pratico","status":"publish","type":"post","link":"https:\/\/www.flapane.com\/blog\/2012\/06\/howto-utilizzare-le-api-di-facebook-nel-vostro-sito-web-un-esempio-pratico\/","title":{"rendered":"HOWTO: Utilizzare le API di Facebook nel vostro sito web &#8211; un esempio pratico"},"content":{"rendered":"<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-1015 image\" title=\"facebook-api\" alt=\"API di Facebook\" src=\"https:\/\/www.flapane.com\/blog\/wp-content\/uploads\/2012\/06\/facebook-api.jpg\" width=\"210\" height=\"162\" \/><\/p>\n<p style=\"text-align: justify;\">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 <a title=\"Flapane Guestbook\" href=\"https:\/\/www.flapane.com\/guestbook\/guestbook.php\" target=\"_blank\">nuovo Guestbook<\/a> (tranne quello dove scrivere il commento vero e proprio \ud83d\ude42 ) tramite il log-in col proprio account di Facebook (che io per\u00f2 non utilizzo, ndr).<\/p>\n<p style=\"text-align: justify;\">Prima di tutto bisogna registrarsi per ottenere una <strong>chiave API di Facebook<\/strong> all&#8217;indirizzo <a title=\"API di Facebook\" href=\"https:\/\/developers.facebook.com\/apps\" target=\"_blank\">developers.facebook.com<\/a>. Bisogna creare una nuova applicazione Web, darle un nome, ed inserire l&#8217;indirizzo del proprio sito nei campi &#8220;App Domains&#8221; e &#8220;Website with Facebook Login&#8221;.<!--more--><\/p>\n<p style=\"text-align: justify;\">Poi scaricate l&#8217;SDK per comunicare con Facebook via PHP da github a <a title=\"Facebook SDK in PHP\" href=\"https:\/\/github.com\/facebook\/facebook-php-sdk\/archive\/master.zip\">questo indirizzo<\/a>, e caricatelo sul server FTP.<\/p>\n<p style=\"text-align: justify;\">Create un nuovo file PHP e copiate al suo interno questo codice che ho scritto, per loggarsi tramite Facebook:<\/p>\n<span class=\"no_translate\"><\/span><\/p>\n<pre class=\"brush:php\">&lt;?\r\n\/\/Facebook SDK and PHP, a pratical example for parsing Name,email,web address and avatar of an user. Code by flapane.com\r\nrequire \"facebook\/facebook.php\";\r\n$facebook = new Facebook(array(\r\n\u00a0\u00a0\u00a0 'appId'\u00a0 =&gt; YOURAPPID,\r\n\u00a0\u00a0\u00a0 'secret' =&gt; YOURSECRETID,\r\n));\r\n\r\n$user = $facebook-&gt;getUser();\r\n\r\nif ($user) {\r\n\u00a0 try {\r\n\u00a0\u00a0\u00a0 $user_profile = $facebook-&gt;api('\/me');\r\n\r\n\u00a0\u00a0 \u00a0\u00a0 $fbname = $user_profile['name'];\r\n\u00a0\u00a0 \u00a0\u00a0 $fblink = $user_profile['link'];\r\n\u00a0\u00a0 \u00a0\u00a0 $fbmail = $user_profile['email'];\r\n\u00a0\u00a0 \u00a0\u00a0 $fbid = $user_profile['id']; \/\/per l'avatar utente\r\n\u00a0 } catch (FacebookApiException $e) {\r\n\u00a0\u00a0\u00a0 \/\/ The access token we have is not valid\r\n\u00a0\u00a0\u00a0 $user = null;\r\n\u00a0 }\r\n}\r\n\r\nif ($user) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 $logoutUrl = $facebook-&gt;getLogoutUrl();\r\n\u00a0\u00a0 \u00a0\u00a0 $access_token = $facebook-&gt;getAccessToken();\r\n\u00a0\u00a0 \u00a0\u00a0 $logout_landing_page = \"http:\/\/www.yourwebsite.com\/index.php\";\r\n\u00a0\u00a0 \u00a0\u00a0 $logout_url = \"https:\/\/www.facebook.com\/logout.php?access_token=\".$access_token.\"&amp;confirm=1&amp;next=\".$logout_landing_page;\r\n\u00a0\u00a0\u00a0 } else {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 $loginUrl = $facebook-&gt;getLoginUrl();\r\n\u00a0\u00a0\u00a0 }\r\n?&gt;\r\n&lt;?php \r\nif (!$user): ?&gt;\r\n\u00a0\u00a0 &lt;div id=\"fb-root\" style=\"display:none\"&gt;&lt;\/div&gt;\r\n\u00a0\u00a0 \u00a0&lt;script language=\"javascript\" type=\"text\/javascript\"&gt; \/\/modifica per validazione w3c\r\n\/\/&lt;![CDATA[\r\ndocument.write('&lt;fb:login-button size=\"medium\" scope=\"email\"&gt;Login with\/Accedi con Facebook&lt;\/fb:login-button&gt;');\r\n\/\/]]&gt;\r\n\u00a0\u00a0 \u00a0&lt;\/script&gt;\r\n&lt;?php endif ?&gt;\r\n\u00a0\u00a0\u00a0 &lt;script type=\"text\/javascript\"&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 window.fbAsyncInit = function() {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 FB.init({\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 appId\u00a0\u00a0\u00a0\u00a0\u00a0 : '&lt;?php echo $facebook-&gt;getAppID() ?&gt;',\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 status\u00a0\u00a0\u00a0\u00a0 : true, \r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cookie\u00a0\u00a0\u00a0\u00a0 : true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 xfbml\u00a0\u00a0\u00a0\u00a0\u00a0 : true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 oauth\u00a0\u00a0\u00a0\u00a0\u00a0 : true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 });\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 FB.Event.subscribe('auth.login', function(response) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 window.location.reload();\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 });\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 };\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 (function(d){\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 js = d.createElement('script'); js.id = id; js.async = true;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 js.src = \"\/\/connect.facebook.net\/en_US\/all.js\";\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 d.getElementsByTagName('head')[0].appendChild(js);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }(document));\r\n\u00a0\u00a0\u00a0 &lt;\/script&gt;\r\n&lt;? if ($user) {\r\necho \"&lt;img src='http:\/\/graph.facebook.com\/$fbid\/picture' title='Sei loggato come\/Logged in as $fbname' alt='Sei loggato come\/Logged in as $fbname' \/&gt;&lt;br \/&gt;&lt;a href='$logout_url'&gt;&lt;img src='facebook\/facebook-logout-button.png' title='Logout' \/&gt;&lt;\/a&gt;\"; \/\/mostra avatar utente e logout button\r\n}\r\n?&gt;<\/pre>\n<p><span class=\"no_translate\"><\/span>\n<p style=\"text-align: justify;\">Sostituite a YOURAPPID e YOURSECRETID le chiavi che avete ottenuto da Facebook for Developers, salvate e caricate la pagina PHP appena creata.<\/p>\n<p style=\"text-align: justify;\">Aprendola, vi verr\u00e0 chiesto di effettuare il login tramite Facebook (ed apparir\u00e0 il pop-up che elencher\u00e0 le autorizzazioni richieste). Effettuato il log-in, sarete in possesso dei dati dell&#8217;utente (oltre che dell&#8217;avatar, che apparir\u00e0 direttamente nella pagina, una volta effettuato il log-in).<\/p>\n<p style=\"text-align: justify;\">I dati (nome, sito web, email ed avatar) sono contenuti nelle variabili:<\/p>\n<span class=\"no_translate\"><\/span><\/p>\n<blockquote><p><span class=\"no_translate\">$fbname = $user_profile[&#8216;name&#8217;];<br \/>\n$fblink = $user_profile[&#8216;link&#8217;];<br \/>\n$fbmail = $user_profile[&#8216;email&#8217;];<br \/>\n$fbid = $user_profile[&#8216;id&#8217;]; \/\/per l&#8217;avatar utente<\/span><\/p><\/blockquote>\n<p><span class=\"no_translate\"><\/span>\n<p style=\"text-align: justify;\">A quel punto, potrete utilizzarli come meglio volete (per esempio, per compilare automaticamente i campi del Guestbook).<\/p>\n<p style=\"text-align: justify;\">E voi utilizzate Facebook o altri social network per facilitare l&#8217;accesso al vostro sito? Che metodo avete utilizzato?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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 \ud83d\ude42 ) tramite il log-in col proprio account di Facebook[&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[7],"tags":[212,211,24,14],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/posts\/1014"}],"collection":[{"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/comments?post=1014"}],"version-history":[{"count":0,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/posts\/1014\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/media?parent=1014"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/categories?post=1014"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/tags?post=1014"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}