OAuth / Twitter adaptador d'autenticació de Zend Framework

Per Lloyd Watkin Steven , dissabte 23 abril 2011 15:57

Es continua treballant (lentament) en el meu nou Twitter basat en l'aplicació. Durant el proper parell de dies festius espero tenir l'impuls de nou en el projecte (en-malgrat el bon clima a l'actualitat). De tota manera, la meva següent tasca era crear un adaptador d'autenticació per al Zend Framework . Vaig tenir una aplicació d'inici de sessió de treball, però amb una caiguda en l'adaptador d'autenticació de Zend Framework va semblar una proposta atractiva, així que el va crear ....

(Jo no vaig a anar a través de OAuth o el registre de la seva aplicació amb twitter, hi ha centenars de guies i és un procés bastant senzill de totes maneres.)

Gaudiu de la confiança del consumidor

La diferència entre OAuth i els adaptadors de authenication altres en el Zend Framework és que OAuth requereix reorientar anada i tornada entre el proveïdor de OAuth i el servidor del seu interès pel client. Per tant el procés no és tan senzill com simplement buscant alguna informació en una base de dades o control de les capçaleres de sol licitud. Afortunadament, el Marc dels components de Zend, com Zend_Oauth_Consumer , prendre gran part del dolor de distància i és només el treball de l'adaptador d'autoritats per fer les trucades a mètodes necessaris.

Per una guia d'ús Zend_Auth i realitzar l'autenticació amb Zend Framework té una recerca en google, o fes un cop d'ull a aquest tutorial de Juan Weier O'Phinney - sessió i autenticació .

Ús

Per utilitzar l'adaptador d'autenticació que necessita passar a través de dos objectes al constructor. El primer és una instància de Zend_Oauth_Consumer configurat per el proveïdor de OAuth. He estat fent això amb el servei de Twitter i es pot veure una peça ràpida que aquí - Entra a Twitter usant Zend Framework . Estic fent servir el meu implementació, on em vaig posar el "URL Autoritzar", com no vull usuari perquè se li demani permís a l'aplicació cada vegada que intento d'inici de sessió. El segon paràmetre és una instància de Zend_Session_Namespace que es crea una instància amb l'espai de noms en el qual voleu afegir les dades d'autenticació. En el meu codi que tinc alguna cosa com el següent:

  $ Config = array (
     'CallbackUrl' => ... de devolució de trucada-url ...,
     'SiteUrl' => 'https: / / twitter.com / OAuth,
     'ConsumerKey' => ... dels consumidors de clau ...,
     'ConsumerSecret' => ... de clau secreta ...,
 );
 $ Consumidor = Zend_Oauth_Consumer nova ($ config);
 setAuthorizeUrl $ consum-> ('https: / / twitter.com / / OAuth / autenticar ");
 $ Session = new Zend_Session_Namespace (Pro_Auth_Adapter_Twitter:: AUTH_NAMESPACE);
 $ AuthAdapter = Pro_Auth_Adapter_Oauth nova ($ consumidor, $ session); 

Trucar ->authenticate() a l'adaptador a continuació, farà una redirecció al proveïdor de OAuth (de nou en el meu cas de Twitter). Al seu retorn a l'aplicació de la segona crida a ->authenticate() van a viure la pròpia autenticació.

Si voleu que l'usuari torni a la pàgina va començar a desenvolupar usant demanada a continuació, sempre que el seu estat d'autenticació es comprova en cada petició simplement establir el paràmetre adequat »callBackUrl 'en temps de càrrega que rep l'usuari al seu destí previst inicialment.

Una última característica que es va afegir la possibilitat d'enviar paràmetres addicionals utilitzant el addParameter() i setParameters() mètodes. Afegeix aquesta funcionalitat permet l'enviament de nous paràmetres GET en fer la primera redirigir al proveïdor de OAuth. En el meu cas, això em permet passar una matriu amb una clau de 'force_login' i el valor de veritat que les forces de Twitter per demanar-li que torni a connectar (fins i tot si ja està registrat), que és ideal per a lligada a càrrec de múltiples aplicacions.

El codi està disponible en el meu repositori GitHub - adaptador d'autenticació OAuth per Zend Framework codi (comentaris benvinguts!).

Edició: Sembla que algú ha estat en el cas. D'altra aplicació vegeu http://www.jasonawesome.com/2010/11/24/authenticating-to-twitter-with-zend_auth/

Deixa una resposta













Panorama Tema per Themocracy

8 usuaris on-line ara
4 persones, contra els robots d'abril, 0 membres
Nombre màxim de visitants d'avui: 24 a les 12:36 UTC
Aquest mes: 26 a 2011.07.05 12:35 UTC
Aquest any: 130 en 2011.03.28 22:40 UTC
Tot el temps: 130 en 2011.03.28 22:40 UTC