Site icon Noir Solutions

Creare applicazioni facebook con PHP SDK e Javascript

E adesso vi introdUciamo a questa guida su Facebook PHP SDK e JSP SDK, ossia a come programmare con le applicazioni Facebook utilizzando sia PHP che Javascript. Vi facciamo notare la data ossia 19-06-13, in quanto Facebook ogni sei mesi nelle sue applicazioni fa dei cambiamenti anche abbastanza radicali, quindi quello che funziona ad oggi potrebbe non funzionare piu’ nelle prossime guide. Facciamo un esempio pratico negli ultimi cambiamenti facebook ha tolto la possibilità di pubblicare con PHP nella bacheca degli altri, questo adesso va fatto con il message dialog di FB quindi occorre un passaggio ulteriori. Cominciamo quindi con Facebook.

Creare applicazioni facebook con PHP SDK

Se per programmare le applicazioni facebook volete utilizzare il linguaggio PHP , occorre innanzitutto che abbiate installato nel vostro spazio web la versione almeno 5 del linguaggio, al momento l’ultima release è 5.4.1. Quindi andate sulla pagina

https://github.com/facebook/facebook-php-sdk

e fate in download zip della libreria per installare il brdige realizzato dalla github che faccia da ponte fra facebook e il vostro spazio web. Questo non è necessario in caso di Javascript in quanto essendo un linguaggio Lato Client non necessità di dovere installare altro.

 

Per dirvi la verità una volta scompattato il contenitore zip vi accorgerete che al momento ci sono anche degli esempi, anche molto utili, ma per il momento seguiamo la liena ufficiale. E consideriamo quindi solamente la cartella src e mettetelo nella cartella dove volete realizzare la vostra applicazione facebook.

Una volta ultimato questo passaggio andiamo ad iniziare su un vostro editor PHP dovrete andare a scrivere il seguente codice

require_once("src/facebook.php");
$config = array();
 $config['appId'] = 'YOUR_APP_ID';
 $config['secret'] = 'YOUR_APP_SECRET';
$facebook = new Facebook($config);

dove potete notare viene richiamato il file facebook.php e come potete vedere avete anche bisogno di mettere le due chiavi di accesso che avete trovato nelle vostre pagine di dove avete creato la vostra applicazione.

Se non vi ricordate dove averte la vostra applicazione facebook la pagina dove dovete andare è questa

https://developers.facebook.com/apps

e li copia e incollare i codici sopra richiesti. Dove fatto questo vedete che la pagina effettua in new Facebook($congif)

Con qeusta operazione facebook passa alla nostra pagina il token, ricordatevi di questa cosa, in quanto ogni volta che ricaricate da zero una pagina avrete bisogno del token di servizio, ossia di rieffettuare questa operazione e quindi avrete bisogno di questo script qui sopra. Se avete bisogno di sapere nello specifico qual è vi basta effettuare la seguente operazione

// Get the current access token
 $access_token = $facebook->getAccessToken();

Per sapere qual è la chiave segreta della vostra applicazione l’istruzione da eseguire è

// Get current App secret
 $secret = $facebook->getApiSecret();

mentre per ottenere la vostra ID dovrete fare

// Get the current app id
 $appId = $facebook->getAppId();

per ottenere tutti i dati di un utente che sta utilizzando la vostra applicazione vi basterà fare

$uid = $facebook->getUser();

nel caso vogliate utilizzare lo stesso access token che vi è stato passato dovete eseguire l’istruzione

// Set a new access token, by first getting it via means other than the SDK
$facebook->setAccessToken($new_access_token);

per settare invece una nuova chiave segreta oppure una nuova id vi basterà eseguire le due seguenti operazioni

in questo caso noi abbiamo messo setFileUploadSupport a true ad indicare che questa operazione nel vostro script è consentita.

Facciamo adesso compiere allo script un’operazione e vediamo come vedere se questo codice genera un’eccezione nel codice ossia un errore che non porta a buon fine l’operazione, nel caso specificico l’operazione è scrivere un piccolo messaggio nel vostro wall, questo lo si fa con l’api radice ossia me. Fate bene attenzione che lo stesso metodo prima veniva utilizzato anche per scrivere nel wall dei vostri amici ma da facebraio 2013 è dreprecated. Quindi dovremo fare

try {
 $facebook->api('/me/feed','POST',
 array(
 'message' => 'Hello World!',
 'link' => 'www.example.com'
 )
 );
 } catch(FacebookApiException $e) {
 $result = $e->getResult();
 error_log(json_encode($result));
 }
.


e dentro result ci sarà l’eccezione generata , se è stata generata secondo la tecnologia json, ossia chiave valore.

Stesso codice ma in questo caso vogliamo intercettare il tipo di errore commesso dall’applicazione facebook allora dovremo fare

try {
 $facebook->api('/me/feed','POST',
 array(
 'message' => 'Hello World!',
 'link' => 'www.example.com'
 )
 );
 } catch(FacebookApiException $e) {
 $e_type = $e->getType();
 error_log('Got an ' . $e_type . ' while posting');
 }

A questo punto potremo procedere a qualche esempio più significativo

 

 

<?php
require '../src/facebook.php';
$facebook = new Facebook(array(
 'appId' => '344617158898614',
 'secret' => '6dc8ac871858b34798bc2488200e503d',
));
// See if there is a user from a cookie
$user = $facebook->getUser();
if ($user) {
 try {
 // Proceed knowing you have a logged in user who's authenticated.
 $user_profile = $facebook->api('/me');
 } catch (FacebookApiException $e) {
 echo '<pre>'.htmlspecialchars(print_r($e, true)).'</pre>';
 $user = null;
 }
}
?>
<!DOCTYPE html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
 <body>
 <?php if ($user) { ?>
 Your user profile is
 <pre>
 <?php print htmlspecialchars(print_r($user_profile, true)) ?>
 </pre>
 <?php } else { ?>
 <fb:login-button></fb:login-button>
 <?php } ?>
 <div id="fb-root"></div>
 <script>
 window.fbAsyncInit = function() {
 FB.init({
 appId: '<?php echo $facebook->getAppID() ?>',
 cookie: true,
 xfbml: true,
 oauth: true
 });
 FB.Event.subscribe('auth.login', function(response) {
 window.location.reload();
 });
 FB.Event.subscribe('auth.logout', function(response) {
 window.location.reload();
 });
 };
 (function() {
 var e = document.createElement('script'); e.async = true;
 e.src = document.location.protocol +
 '//connect.facebook.net/en_US/all.js';
 document.getElementById('fb-root').appendChild(e);
 }());
 </script>
 </body>
</html>


Consideriamo questo codice, ovviamente ancora non saremo in grado di comprendere tutto il suo significato , vedete che c’è l’introduzione di FBML ossia Javascript  SDK di Facebook, vi vogliamo fare notare come sia facile introdurre il linguaggio PHP all’interno del Javascript anche se non avete uno specifica conoscenza del secondo o del primo linguaggio. Questo è perchè il tutto è stato pensato anche per permettere ai programmatori meno esperti comunque di utilizzare questo tipo di tecnologia. Facciamo un passo indietro e consideriamo il seguente codice

 

 <?php 
 error_reporting(0);
//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
//$result = curl_exec($ch);
require 'facebook.php';
// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
 'appId' =>'xxxxxxxxxxxxxxxxxxxxxxxxx',
'secret' =>'xxxxxxxxxxxxxxxxxxxx',
'cookie' => true,
));
// See if there is a user from a cookie
$user = $facebook->getUser();
if ($user) {
 try {
 // Proceed knowing you have a logged in user who's authenticated.
 $user_profile = $facebook->api('/me');
 } catch (FacebookApiException $e) {
 echo '<pre>'.htmlspecialchars(print_r($e, true)).'</pre>';
 $user = null;
 }
}

 

 

 

Questo codice deriva da un’applicazione vera che abbiamo realizzato vi facciamo notare solamente alcuni passi

Vi facciamo notare anche le righe di codice

//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 //$result = curl_exec($ch);

come potete vedere sono commentate, ossia nel debug del codice php non hanno alcun valore , adesso non ha piu’ senso metterle li, ma c’e’ caso che quando andate a eseguire l‘applicazione vi generi un errore sul certificafo https nel file src/facebook.php o base_facebook.php mi sembra di ricordare intorno al rigo 820, le cause di questo errore possono essere molteplici ma in sostanza si tratta di un problema di riconoscibilità del codice crittato fra il certicato https messo dalla casa di hosting e il certificato che trovate dentro il src. Per ovviare a questa richiesta vi basterà fare in modo che lo stesso non venga richiesto inserendo dove si genera l’errore quelle due righe di codice che vedete riportate. Alle prossime guide.

Exit mobile version