Codeigniter készítsünk Facebook alkalmazást

#codeigniter #php #facebook #facebook-sdk #sdk

Codeigniter készítsünk Facebook alkalmazást

Figyelem!

Úgy tűnik, hogy jelenleg egy olyan cikket böngészel ami több mint két éve készült. A technológia világában ez nagyon sok idő és azóta már sokkal jobb megoldások is lehetnek, mint amit ebben a cikkben olvashatsz. Így azt tanácsolom keress egy frissebb cikket ebben a témában.

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));
Ehhez az szükséges, hogy alkalmazásunk 'Games' kategóriába legyen besorolva.


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!

További tartalmak