Zend Authentikáció Facebook, Twitter, Google Plus segítségével

A közösségi média egyre nagyobb térnyerésével szükségessé válik, hogy a felhasználóinknak megkönnyítsük weboldalunk használatát. Mivel felhasználóink nagy része tagja valamelyik közösségi portálnak, a legnagyobbak ezek közül a  Facebook, Google Plus illetve Twitter. Ezen közösségi oldalaknak létezik, olyan beépíthető eleme, amellyel a felhasználó azonosítás elvégeztethető, ezáltal weboldalunk felhasználóinak, nem kell megjegyeznie, egy új e-mail cím esetleges felhasználónév és jelszó párosokat, hanem a Belépés Facebookkal, Belépés Twitterrel, és Belépés Facebookkal gombok valamelyikére kattintva és megadva az adott közösségi oldalhoz tartozó belépési adatokat, a felhasználó beazonosítható. Ennek sok előnye és hátrány van, ezzel most nem foglalkozunk.

Mivel Zend keretrendszerben fejlesztek jelenleg több mindent. A jövőre nézve, olyan rendszer fejlesztésén dolgozom ami 2-3 évig ki tud szolgálni többféle igényt, ennek egyik követelménye, hogy közösségi oldalak segítségével tudjam a felhasználókat azonosítani.

Mivel sokan vannak, akik hasonló dolgokkal küzdenek, kicsit szét néztem ezen téren, nincs-e már valami kitalált megoldás a problémára, ekkor találtam meg a The Best Solution megoldását. Mivel névtereket használ PHP 5.3 felett működik a megoldás. Azonban mint minden, amit talál az ember valahol valamilyen formában, az nem biztos, hogy elsőre működik is.

A használat közben, egyik nagy problémám az volt, hogy a application.ini  fájlból az adatokat én nem tömbbe hanem Zend_Config objektummal hozom létre. Így egy objektumon keresztül tárolom a konfigurációs adatokat és nem egy tömbben mint azt a példa kód szeretné.

Azaz  a mintakódban szereplő Bootstrap.php fileban található konfigurációs adatok beolvasása:

protected function _initConfig(){
Zend_Registry::set('config', $this->getOptions());
}

helyett az én alkalmazásomban, én így olvasom be a konfigurációs adatokat:

protected function _initConfig()
{
Zend_Registry::set('config', new Zend_Config($this->getOptions()));
}

Ennek következménye pedig egy szép hibaüzenet volt:

Fatal error: Cannot use object of type Zend_Config as array in D:\wamp\www\...\library\TBS\Auth\Adapter\Twitter.php on line 46

Azaz, ne használjam az objektumot tömbként, nyilván nem szabad.

Mivel a beépítendő kód mennyisége elenyésző a már elkészített munkához, nincs más hátra mint kicsit átírni a dolgokat. Tulajdonképpen a megoldása ennek triviális, ahol a konfigurációs adatokat használni akarom, ott nem tömbként hanem objektumként kell az adott változót kiolvasni. Azaz:

A TBS névteren belüli Adaptereket (TBS\Auth\Adapter) kicsit át kell írni:

TBS\Auth\Adapter\Twitter.php

Ahol a beállításokat használni akarjuk azaz azon helyeken ahol

$options = Registry::get('config');

kód található.

Az $options változó nem egy tömb hanem egy Objektum lesz, így ennek használata másképp működik, pl.:

$consumer = new Consumer($options['twitter']);

helyett, használjuk így:

$consumer = new Consumer($options->twitter->toArray());

Azaz az $options változóban lévő tulajdonságokat egy objektumból nyerjük vissza.

Ez Facebookban:

TBS\Auth\Adapter\Facebook.php

$consumer = new Consumer($options['facebook']);

helyett, használjuk így:

$consumer = new Consumer($options->facebook->toArray());

TBS\Auth\Adapter\Google.php

$consumer = new Consumer($options['google']);

helyett, használjuk így:

$consumer = new Consumer($options->google->toArray());

Ezzel az egyszerű átírással kiküszöbölhető a keletkező hiba, és nem kell átalakítanunk a kész rendszerünk konfigurációs adatainak használatát.

Ahhoz, hogy ezen azonosítási lehetőségeket tudjuk is használni, meg kell teremtenünk Facebook, Google Plus illetve Twitter esetén a szükséges  és elvárt feltételeket.

Reklámok

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

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s