OAuth / Twitter Auth Adapter za Zend okvirni
Delo se nadaljuje (počasi) na mojem novem Cvrkutati temelji zahtevek. V naslednjih nekaj praznikih upam, da dobim dinamiko znova o projektu (v-kljub čudovito vreme trenutno). Kakorkoli že, moj naslednji naloga je bila ustvariti pristnosti adapter za Zend okvir . Imel sem delovno prijavo izvajanje, vendar imajo padec adapter Auth za Zend okvir zdel privlačen predlog, zato sem ga ustvaril ....
(Ne bom šel skozi OAuth ali registracija vaše prijave z Cvrkutati, obstaja na stotine vodnikov in dokaj preprost postopek v vsakem primeru.)
Razlika med OAuth in drugih authenication adapterjev v Zend Framework je, da OAuth zahteva preusmeritev naprej in nazaj med OAuth ponudnikom in strežnik, ki ga zahteva naročnik. Torej postopek ni tako zelo naravnost naprej, kot je videti le nekaj podrobnosti v zbirki podatkov ali preverjanje zahteva glave. Na srečo Zend okvirnega komponent, kot so Zend_Oauth_Consumer , da veliko bolečine proč in svoj šele naloga auth adapter, da pripravi potrebno klice metodo.
Za navodila za uporabo Zend_Auth in opravljajo preverjanje pristnosti z Zend so okvirni iskanje na google, ali check out to Tutorial z Matthew Weier O'Phinney - Login in Authentication .
Uporaba
Da bi lahko uporabljali avtentikacijo adapter morate opraviti dve stvari v preko konstruktorja. Prvi je primer Zend_Oauth_Consumer ustanovljena za ponudnika OAuth. Sem bil početje to s služba Twitter in si lahko ogledate hitro kos o tem tukaj - Prijavite se s Twitter uporabljajo Zend okvir . Jaz sem uporabo moje izvajanje, kjer sem iz "Potrditev URL", kot jaz ne želim si, da prosi, da dovoljenje za uporabo vsakič, ko poskus, da se prijavite. Drugi parameter je primer Zend_Session_Namespace, da se zaženejo z imenski prostor, v katerega želite postaviti pristnosti podrobnosti. V mojem kodo imam nekako takole:
$ Config = array ( "CallbackUrl '=> ... klic, url ... "SITEURL '=>' https: / / twitter.com / OAuth" "ConsumerKey '=> ... potrošnikov-key ..., "ConsumerSecret '=> ... skrivnost-key ..., ); $ Potrošnika = new Zend_Oauth_Consumer ($ config); $ Potrošnikov-> setAuthorizeUrl ("https: / / twitter.com / OAuth / potrditi"); $ Zasedanju = new Zend_Session_Namespace (Pro_Auth_Adapter_Twitter:: AUTH_NAMESPACE); $ AuthAdapter = new Pro_Auth_Adapter_Oauth ($ potrošnikov, $ zasedanju);
Klicanje ->authenticate() na adapter bo potem pa preusmeri na ponudnika OAuth (spet v mojem primeru Twitter). Po vrnitvi v uporabo drugi klic ->authenticate() bo dejansko opravlja pristnosti samega.
Če ste si želeli uporabniku, da se vrnete initally zahtevane strani nato iz vaše pristnosti statusa se preverja na vsaki zahtevi nato preprosto nastavljanje parametrov primerno "callBackUrl" v času obremenitve bi dobili uporabnik prvotno predvideno destinacijo.
Še zadnja značilnost sem bila dodana možnost pošiljanja dodatnih parametrov z addParameter() in setParameters() metode. Dodajanje ta funkcija omogoča pošiljanje dodatnih GET parametrov pri pripravi začetne preusmeriti na ponudnika OAuth. V mojem primeru je to mi omogoča, da prenese array s tipko "force_login" in vrednosti, ki velja sil Twitter zahtevati boste prijavili še enkrat (tudi če je že prijavljeni), ki je super za vezane vloge multi-račun.
Koda je na voljo na mojem repo GitHub - OAuth auth adapter za okvirni kodo Zend (komentarji dobrodošli!).
Edit: Izgleda, da je nekdo bil na primer tudi. Za drugo izvedbo, si oglejte http://www.jasonawesome.com/2010/11/24/authenticating-to-twitter-with-zend_auth/


















































