2012. április 21., szombat

Like-kapu készítése

Ez gondolom egy olyan cikk, amire már sokan epekedve várnak. Eljött az ideje, hogy minden olvasó elkészítse a saját Like-kapuval zárt Facebook-aloldalát (ha most hirtelen azon kaptad magad, hogy fogalmad sincs, miről van szó, akkor itt utána olvashatsz: penz-es-marketing-a-neten.blog.hu/2012/04/19/a_like_kapu_hatalma). 

A mai feladat:
Készítsünk egy olyan - Facebook-honlapba integrált - alkalmazást, aminek lényegi része csak azt követően jelenik meg, hogy a látogató lájkolta az oldalt. Ha már úgyis felmerült az előző bejegyzések kommentjei között: legyen az a lényegi tartalom egy egyszerűbb kvízes megoldás.

A működés (felhasználói szemmel):
Valahol rábukkanok (majd rá is kattintok) egy linkre, ami egy kvízes app-hoz vezet... Amit tapasztalok: egy  lap köszönt, ami felhívja rá a figyelmem, hogy amennyiben szeretném kitölteni a kvízt, Like-olnom kell az oldalt... Miután ezt megtettem: jön egymásután (tehát válaszadások után) 3 kérdés, 3 lehetséges válasszal (mindegyiknél csak 1 helyes válasz lesz)... A 3 válaszadást követően a program kiértékeli, hogy mennyire vagyok jó a témában. 

Na, akkor fejlesszünk:
Ahhoz, hogy kivitelezhessük a fent leírt eljárást, le kell kérdeznünk valahogy a "lájkolási állapotot". Miután ezzel tisztában vagyunk, a kapott értéknek megfelelően más-más tartalmat jelenítünk meg. Ehhez a lekérdezéshez az alábbi rövid kódrészletre van csak szükség a PHP kódodban:

$app_id = "123456789012345";
$app_secret = "1234567890abcdef1234567890abcdef";


require 'facebook-php-sdk/src/facebook.php';
$code = $_REQUEST["code"];


$facebook = new Facebook(array(
   'appId'  => $app_id,
   'secret' => $app_secret,
   'cookie' => true
));


$signed_request = $facebook->getSignedRequest();
$like_status = $signed_request["page"]["liked"];

Ennek a rövid kódnak is a java része már ismerős kell, hogy legyen, mivel ez magában foglalja a Facebook-SDK meghívását, a Facebook-osztály létrehozását, stb. Az első belépéskor a "like_status" változó hordozza  magában a titkot: lájkolták-e az oldalt? Ha igen, akkor "true" értéket kap. Ekkor gyakorlatilag már csak annyi van hátra, hogy egy létrehozunk egy elágazás, ami a feltétel részben ezt a változót vizsgálja. Egy egyszerű példa erre:

if ($like_status)
   echo 'Köszönjük a Lájkot!';
else
   ehco 'Kérjük, Lájkold az oldalt!';

Az pedig gondolom nyilvánvaló, hogy melyik esetben melyik felirat kerül kiíratásra :) Itt már csak annyi az extra feladat, hogy kitaláljuk, mi legyen az a tartalom, amivel az embereket magunkhoz tudjuk csalogatni, és amiért megéri nekik lájkolni minket.

Jöhet a kvíz:
A legcélszerűbbnek azt láttam, hogy nagy vonalakban, vázlatosan leírom a program működését, és mellékelek egy szabadon letölthető forráskódot, amiben pedig teljes egészében láthatóak a parancsok. Egy "pont" nevű session-változóban tároljuk el a helyes válaszok számát (ez a betöltéskor nulla lesz). A kérdésekete és válaszokat 3 tömbben tároljuk: a "kerdesek" nevű a kérdések listáját tartalmazza, a "valaszok" két-dimenziós mátrix az adott indexű kérdéshez tartozó 3 válasz-lehetőséget őrzi magában, majd a "helyesvalaszok" tömb még azt tárolja el, hogy adott indexű kérdéshez hányadik indexű válasz a helyes. Lesz egy - GET metódussal, a linkeken keresztül érkező - "step" nevű bemenő paraméter, ami azt jelzi, hogy hányadik lépésnél tartunk (illetve, hogy egyáltalán játékban vagyunk-e). Ha a "like_status" értéke nem igaz és a "step" is azt mutatja, hogy éppen nem vagyunk játékban, akkor jön az a képernyő, hogy Like-olnunk kell a játékért. Ha ez megtörtént, a "step" értéke máris 1 lesz, így a játék kezdetét veszi. Amennyiben volt válaszadás ("answ" paraméter), megnézzük, hogy változik a pontszám, ha a "step" eléri a kérdések maximális számát, akkor következik a kiértékelés (a "step" pedig újra nullázódik), ha pedig a "step" még mindig játékban van, kiírjuk a következő kérdés adatait, a válaszoknak megfelelő linkeket generálunk (amik már 1-gyel nagyobb "step" értéket adnak majd). Ez a koncepció röviden :) Remélem, könnyen át sikerül majd látni a forráskódot is. 

Letöltés:
Az általam kreált Like-kapuval ellátott Kvíz-alkalmazást letöltheted az alábbi linkre kattintva:
facebook.com/penzesmarketinganeten/app_431315400216415
Ha bármilyen észrevételetek akad, vagy hibát találtok benne, értesítsetek és együtt orvosoljuk azt :)

Akkor jó munkát a használathoz! Kellemes hétvégét!