OAuth / Twitter Auth адаптар для Zend Framework

Па Стывен Лойд Уоткин , у суботу 23 красавіка 2011 г. 03:57 вечара

Працягваецца праца (павольна) на маім новым Twitter -прыкладанні. За наступныя некалькі святаў я спадзяюся атрымаць імпульс зноў працягваецца па праекце (у Нягледзячы выдатная надвор'е ў цяперашні час). Ва ўсякім выпадку, мая наступная задача складалася ў стварэнні аўтэнтыфікацыі адаптар для Zend Framework . Я правёў рабочую Увайсці рэалізацыі, але з падзеннем Auth адаптар для Zend Framework здаваўся прывабным прапановай, таму я стварыў яго ....

(Я не збіраюся ісці праз OAuth або рэгістрацыі прыкладанні з Twitter, ёсць сотні кіраўніцтваў і даволі просты працэс ва ўсякім выпадку.)

Атрымлівайце асалоду ад спажывецкага даверу

Розніца паміж ААТ і іншыя адаптары authenication ў Zend Framework з'яўляецца тое, што OAuth патрабуе перанакіраванне туды і назад паміж OAuth пастаўшчыка і запытваючага сервера кліенту. Таму працэс не гэтак прамым, як проста гледзячы некаторыя дэталі ў базе дадзеных або праверкі загалоўкаў запыту. Да шчасця Zend Framework кампаненты, такія як Zend_Oauth_Consumer , зойме шмат боль сыдзе і яго проста праца аўтарызацыі адаптар, каб зрабіць неабходныя званкі метад.

Для кіраўніцтва па выкарыстанні Zend_Auth і выканання аўтэнтыфікацыі з Zend Framework ёсць пошук у Google, або праверыць гэты падручнік Мэцью Уэьер O'Phinney - Увайсці і ідэнтыфікацыі .

Выкарыстаньне

Для таго каб выкарыстаць аўтэнтыфікацыю адаптара неабходна перадаць два аб'екта ў з дапамогай канструктара. Першы экзэмпляр Zend_Oauth_Consumer, створанага для вашага пастаўшчыка OAuth. Я рабіў гэта з служба Twitter і вы можаце бачыць хуткі частка на што тут - Увайдзіце ў Twitter з выкарыстаннем Zend Framework . Я выкарыстоўваю мой рэалізацыі, дзе я паставіў "Аўтарызацыя URL", як я не хачу карыстальніка на папросяць даць дазвол на прымяненне кожны раз, калі яны спрабуюць Увайсці. Другі параметр асобнік Zend_Session_Namespace, які ствараецца з прасторай імёнаў, у якім Вы жадаеце размясціць звесткі для праверкі сапраўднасці. У маім кодзе я нешта накшталт наступнага:

  $ Канфігурацыі масіва = (
     "CallbackUrl '=> ... зваротнага выкліку URL-...,
     "SITEURL '=>' HTTPS: / / twitter.com / ААТ,
     "ConsumerKey '=> ... спажывецкіх ключ ...,
     "ConsumerSecret '=> ... сакрэтным ключом ...
 );
 $ Спажыўцоў = новы Zend_Oauth_Consumer ($ канфігурацыі);
 $ Спажыўцоў> setAuthorizeUrl ('HTTPS: / / twitter.com / ААТ / аўтэнтыфікацыі');
 $ = Сесіі новага Zend_Session_Namespace (Pro_Auth_Adapter_Twitter:: AUTH_NAMESPACE);
 $ AuthAdapter = новы Pro_Auth_Adapter_Oauth ($ спажыўцоў, $ сесіі); 

Выклік ->authenticate() на адаптары будзе прычынай перанакіраваньні на пастаўшчыка OAuth (ізноў жа ў маім выпадку Twitter). Па вяртанні ў дадатак Другі выклік ->authenticate() будзе фактычна выконваць аўтэнтыфікацыю сябе.

Калі вы хацелі карыстачу вярнуцца да initally запытаную старонку, то пры ўмове праверкі сапраўднасці статус правяраецца на кожны запыт, то проста ўстаноўка параметраў адпаведных "callBackUrl 'падчас загрузкі будзе атрымаць карыстачу першапачаткова запланаванага прызначэння.

Апошні асаблівасць, якую я дадаў была магчымасць адпраўкі дадатковых параметраў з дапамогай addParameter() і setParameters() метадаў. Даданне гэтай функцыі дазваляе перадаваць дадатковыя параметры GET пры прыняцці пачатковых перанакіраванне на пастаўшчыка OAuth. У маім выпадку, гэта дазваляе мне перадаць масіў з ключом 'force_login і значэнне праўдзівага, які прымушае Twitter прасіць Вас Увайсці зноў (нават калі яны ўжо ўвайшлі ў сістэму), які з'яўляецца вялікім для многіх звязаны-рахунак прыкладанняў.

Код даступны на маім РЕПО GitHub - OAuth аўтарызацыі адаптар для Zend Framework код (каментары вітаюцца!).

Змяніць: Падобна на тое, хто-то быў па справе, а таксама. Для іншай рэалізацыі гл. http://www.jasonawesome.com/2010/11/24/authenticating-to-twitter-with-zend_auth/

Напісаць адказ













Панарама Тэма Themocracy

4 наведвальнікаў зараз
3 гасцей, 1-ботаў, 0 карыстальнікаў
Макс наведвальнікаў сёння: 11: 02:18 AM UTC
У гэтым месяцы: 22 у 2011/06/08 12:30 раніцы UTC
У гэтым годзе: 130 у 2011/03/28 10:40 вечара UTC
За ўвесь час: 130 у 2011/03/28 10:40 вечара UTC