facebookAz első részben odáig jutottunk el, hogy rávettük a facebookot, hogy hitelesítse az alkalmazásunkat, és a userhez tartozó azonosítót és ideiglenes session azonosítót el tudtuk menteni. Mivel éppen egy facebook klienst fejlasztünk nekünk egy olyan session-ra lesz szükségünk ami örökké tart.

Szerencsére a sok dokumentáció több helyen is határozottan kijelenti, hogy örök életű session-ok nem léteznek többé. Nem igazán értem, hogy ezt miért hangsúlyozzák annyira, mert valójában nem is igaz.

A második hitelesítés

A második hitelesítés során kaphatunk jogosultságokat a user adataihoz. Jó esetben a post authorize redirect url-re való visszairányításakor egyből kihasználjuk a lehetőséget, hogy a usert rávegyük arra, hogy engedélyezze számunkra a megfelelő hozzáféréseket. Több különböző hozzáférés van, listájuk itt elérhető. Ezek közül az offline_access az ami egy végtelen session key-t biztosít a számunkra.

Engedélyeket úgy tudunk szerezni, hogy a usert a facebook oldalon ide-oda irányítgatjuk. A user minden egyes oldalon engedélyezhet egy-egy jogosultságot az alkalmazás számára.

Tehát az első hitelesítés után a facebook visszadobta a usert az általunk megadott post authorize redirect url-re. Ebben a fájlban összeállthatunk egy speciális linket amire kattintva a user visszajut a facebook oldalra, hogy engedélyezze azt amire vágyunk.

<?php
$authorizeLink = 'http://www.facebook.com/authorize.php?api_key='.$api_key.'&v=1.0';
$link_status_update = urlencode($authorizeLink . '&ext_perm=status_update');
$link_read_stream = urlencode($authorizeLink . '&ext_perm=read_stream&next='.$link_status_update.'&next_cancel='.$link_status_update);
$link_offline_access = $authorizeLink . '&ext_perm=offline_access&next='.$link_read_stream.'&next_cancel='.$link_read_stream;

$link_getPermissions = $link_offline_access;
?>

A kód egy kis magyarázatra szorul. A $authorizeLink a különböző jogosultságok engedélyezések urljeinek közös része, ez a rész megtalálható mindegyikben.
Három jogosultságot kérünk, amelyhez három linkre lesz szükségünk. Mindegyik a $authorizeLink-kel fog kezdődni majd az ext_perm paraméterrel folytatódik, melynek értékeként megadjuk a három áhított jogosultság elnevezését: status_update, read_stream, offline_access.

Végül nem teszünk mást mint a három url-t egymás után fűzzük, úgy hogy az egymást követők az előző next paraméterébe kerüljenek urlencode-olt formában. Kicsit bonyolultabb leírni mint amennyire valójában az.

Ha a felhasználónk rákattint erre a linkre akkor visszajut a facebook-ra és egy ablak arra kéri, hogy kattintson a benne lévő gombra ahhoz, hogy biztosítsa alkalmazásunk számára az első jogot. Az első után a másodikat, majd a harmadikat. Végül a user bezárhatja a facebook ablakot.

Az alkalmazásunk oldalán nem kell a második hitelesítés során semmi mást tennünk, mert tulajdonképpen ez történik, hogy az egy órára szóló session-key élete végtelenítődik, így azt amit korábban már elmentettünk mostantól fogva addig használhatjuk amíg a user az engedélyt vissza nem vonja.

Engedélyek vizsgálata

Menet közben időnként eszünkbe juthat, hogy ellenőrizzük, hogy a user nem vonta-e vissza a korábban megadott engedélyt. ezt a következőképpen tehetjük meg:

<?php
if($facebook->api_client->users_hasAppPermission('offline_access', $facebookUserId)){
   //itt csináljuk azt amihez kell az offline_access
   }
?>

Engedélyek visszavonása

Mivel sem az engedélyek biztosítása, sem azok visszavonása nem a saját alkalmazásunkban történik hanem a facebook oldalain nem ártana ha valahogyan tudtunkra jutna amikor egy user visszavonja a jogokat.

Ha jobban megnézzük az alkalmazásunk beregisztrálásakor megadott adatokat, akkor találunk köztük egy post remove callback url nevű is. Ezt az url-t fogja meghívni a facebook amikor a user visszavonja a hitelesítést. A user nem lesz ide átirányítva a facebook egyszerűen csak kiküld erre az url-re pár adatot, köztük a facebbok user_id-t amit elkapva az alkalmazásunk tudtára tudjuk adni, hogy a user visszavonta a hozzáférést.

Ez a két bejegyzés valójában csak egy igen nyúlfarknyi bepillantást ad a facebook platform működésébe, de remélem, hogy segít átevickélni a kezdeti nehézségeken. Így hát mindenkinek jó kódolást!

Facebookra fejlesztés 2
Cimke:     

2 thoughts on “Facebookra fejlesztés 2

  • 2009. július 24. at 10:22:31
    Permalink

    Nagyon jó leírás mindkettő, nem akarok követelőző lenni de egy gyakorlati példa, amiben egy egyszerű bejelentkezés és kiíratás van, hogy gratulálok bejelentkeztél vagy egy comment rendszer hogy beléphet és commentelhet a facebook acc-jával, hihetetlen jó lenne 🙂

    Válasz
  • 2009. szeptember 07. at 13:55:03
    Permalink

    Nem tudom volt e már ilyen tapasztalata valakinek de ha a felhasználó nem adott meg profilképet a facebook-on attól én még kapok linket ami mondjuk azt a szürke képet adja vissza? vagy linket se kapok tehát semmit se. Mert én ez alapján szeretném eldönteni hogy vendég e aki nem tud megadni képet vagy fb-felhasználó akinek alapból van képe. A válaszokat előre is köszönöm.

    Válasz

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük