Le nuove librerie PHP di Facebook versione 4.x, che si intefacciano con le api 2.2, usano i namespace, funzionalità non ancora usata a pieno in Yii 1.1. Secondo le istruzioni di Facebook presenti su GitHub è sufficiente definire una costante ed includere l’autoloader dell’SDK. Questa soluzione purtroppo non va a braccetto con il loader integrato di Yii.
Esiste però un’escamotage usando gli strumenti interni di Yii. La soluzione è facilmente estendibile a qualunque altra libreria che usi i namespace ed abbia bisogno di un loader.
Scaricare ed estrarre il contenuto dell’SDK in una posizione del progetto, ad esempio protected/extensions/. Nel file dove dobbiamo usare le librerie, prima di definire la classe, aggiungere:
define(‘FACEBOOK_SDK_V4_SRC_DIR’, YiiBase::getPathOfAlias(‘ext.facebook-php-sdk-master.src.Facebook’));
Yii::setPathOfAlias(‘Facebook’, Yii::getPathOfAlias(“ext.facebook-php-sdk-master.src.Facebook”));
A questo punto l’unico accorgimento che dobbiamo seguire per richiamare le funzioni della nuova SDK è di prefissarle con il namespace Facebook:
Facebook\FacebookSession::setDefaultApplication($fbAppId, $fbAppSecret);
$helper = new Facebook\FacebookRedirectLoginHelper(Yii::app()->createAbsoluteUrl(“/FacebookHandler”));
try {
$this->_session = $helper->getSessionFromRedirect();
} catch (Facebook\FacebookRequestException $ex) {
// return FALSE;
} catch (Exception $ex) {
// return FALSE;
}
Et voilà, ora è possibile usare tranquillamente tutte le API dell’SDK Facebook in Yii! In questo modo si può facilmente creare un modulo o un’estensione che usi Facebook.
Image source: mashable.com.
Per altre informazioni visitate la sezione del nostro blog.