Logikus választásunk, ha a Codeigniter keretrendszert akarjuk használni Facebook alkalmazásunk fejlesztéséhez. De hogyan is kell elindulni ezen az úton? Ebben próbálok segíteni ezzel a cikkemmel.
Az alapok
Több Facebook alkalmazást készítettem a régi (értsd: 2 évvel ezelőtti) API-n keresztül, de az új rendszer egyszerűsége és Graph API egyértelműsége nagy elmozdulás egy pozitív irányba a Facebook részéről. Mit is kell plusszba tudnunk ahhoz, hogy jól működő alkalmazást tudjuk készíteni?
PHP SDK 3.0
Az új PHP SDK sokban megkönnyíti dolgunk. Bármilyen alkalmazás ötletünket könnyedén integrálhatjuk a Facebook-al. Már csak az a kérdés, hogy miként ötvözzük az egészet a Codeigniter framework-el.
Új Library
Új library-ként egyszerűen beépíthetjük, csak a következő módosításokat kell végrehajtanunk rajta:
- Letöltjük a a PHP SDK friss verzióját a Github oldalukról.
- Átnevezzük, hogy nagy kezdőbetűje legyen a Facebook.php fájlnak.
- Hozzáadjuk a fájl elejéhez, hogy:
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
- És a fájlokat a application/libraries könyvtárba másoljuk.
- Készítünk egy konfig fájlt a config mappában facebook.php néven, ami tartalmazza a következő sorokat:
$config['appId'] = 'YOUR APP ID';
$config['secret'] = 'YOUR SECRET KEY';
// ahol az app id az alkalmazásunk azonosítóját,
// a secret id pedig a titkos azonosítóját jelenti
// persze ezek PHP tagok között
- És biztosra megyünk, hogy a config.php fájlunk-ban a
$config['allow_get_array']
TRUE-ra van állítva.
Én még hozzá szoktam adni egy rights.php fájlt a konfigurációhoz, amiben a login paraméterek vannak tárolva, valahogy így:
$config['facebook_login_parameters'] = array(
'scope' => 'email, publish_stream, user_birthday, publish_actions',
'display' => 'page',
'redirect_uri' => 'https://apps.facebook.com/ALKALMAZÁS NAMESPACE/',
);
Amit persze szintén autoload-olunk az egyszerűség kedvéért. Itt egy trükköt szoktam használni, mivel a Facebook blokkolja a saját hivatkozású “frame”-jeit. Ezért a login URL-t target="_top"
-al adjuk meg, hogy ki tudjon ugrani a jóváhagyó oldalra. Aztán a redirect_uri miatt úgyis visszatér alkalmazásunk oldalára a felhasználó.Nem túl HTML5 barát megoldás, de működik.
Login URL
Az előzőekben említett ‘csalás’ miatt a következőképpen nézhet ki:
echo anchor($this->facebook->getLoginUrl($this->config->item('facebook_login_parameters')), 'Facebook kapcsolat jóváhagyása', 'id="connect_button" class="login-button" target="_top"');
Login után
Rögzíthetjük a felhasználó adatait a saját adatbázisunkba, de ehhez az adatait is le kell kérdeznünk. Mivel már library-ként beolvastuk a PHP SDK-t, ezért a következő sorral könnyedén megtudjuk a user azonosítóját:
$result = $this->facebook_model->get_user();
Fejlesztés során hasznos lesz a Graph API Explorer használata, amihez elég könnyű hozzászokni.
Könnyű auth
Ha már regisztrált az illető, vagy ismerjük az azonosítóját, akkor tovább engedjük az alkalmazásban. Érdemes ellenőrizni a __construct function-ön belül ezt minden oldallekérdezésnél. SESSION-ben ezt is tárolhatjuk persze.
Legalább a főoldalon ellenőriznünk kell az access token-t is. Ez biztosít minket arról, hogy a felhasználó megadta a megfelelő jogokat az alkalmazásunk működéséhez.
Ezt könnyedén megtehetjük a következő sorokkal:
$result = $this->facebook_model->get_access_token();
Értelem szerűen ha FALSE értéket kapunk, akkor valami nincs rendben.
Mi a modellünk?
Ha lekérdezni vagy postolni akarunk valamit, akkor elég sokrétű kódokat készíthetünk. Nem térek ki részletesen mindenre, de pár Graph API példát felsorolok nektek.
Teljes felhasználói adatok lekérdezése:
$query = $this->facebook->api('/'.$this->session->userdata('facebook_uid'));
// feltételezzük, hogy session-ben már tároljuk a facebook azonosítót
// akár ez lehetne '/me' is
Ha játékunk pontszámot akar postolni:
$this->facebook->api('/'.$this->session->userdata('facebook_uid').'/scores', 'post', array('score' => $score));
Ha a felhasználó nevében akarunk postolni valamit:
$this->facebook->api('/'.$this->session->userdata('facebook_uid').'/feed', 'post', array('link' => 'http://apps.facebook.com/ALKALMAZÁS NAMESPACE', 'picture' => '75x75 KÉP ÚTVONALA', 'name' => $user_array['first_name'] . ' scored amazing ' . $score . ' and reached level '. $level . '. in A CSODÁLATOS ALKALMAZÁSOMBAN!', 'caption' => 'PRÓBÁLD KI TE IS!', 'desciption' => 'MÉG TÖBB LEÍRÁS ÉS RÉSZLET'))
De ezekről is a hivatalos dokumentációban többet olvashattok.
Hogyan tovább?
Persze még sokkal több dolgot lekérdezhetünk/postolhatunk, kérdés az mire adnak engedélyt nekünk a felhasználók.
Sok szerencsét mindenkinek a Facebook alkalmazása elkészítésében!