"Logga in med Twitter" använder Zend Framework

Genom Steven Lloyd Watkin , torsdag 17 mars 2011 01:07

Trots alla kvittra hatar just nu har jag som mål att skapa ett nytt Twitter -baserad applikation. Att vara någon som driver flera konton (både personlig och för mitt välgörenhetsarbete) Jag har varit som behöver ett verktyg för någon gång att jag bara ta sig runt att skriva (mer om detta i en snar framtid ...).

Jag har läst på Zend_Oauth_Consumer och hur den kan användas för att få tillstånd för att interagera med twitter använder oauth . Ju bra, jag har min tillgång nyckel och jag kan glatt skicka iväg på en användares vägnar. Det finns gott om resurser ute för att göra detta så jag kommer inte tråka ut folk.

Nästa steg var att tillåta människor att återvända till webbplatsen, logga in och ändra sitt konto. Det är där jag nått ett litet problem. Använda kodexempel på webbplatser innebar att jag skulle ha twitter frågar mig om tillgång tillstånd igen för varje inloggning, inte bra. Skanna genom den ram jag kunde inte se någonting som skulle tillåta mig att bara begära autentisering. Det är inte att säga sitt inte där, men det verkade inte vara en autentisering som kan åberopas utan att veta åtkomsttoken redan.

Alternativen var att genomföra en webbplats baserad logga in eller på något sätt lagra användarens åtkomsttoken på klienten (krypterad förstås). Ingen av dessa verkade som en bra / lämplig lösning.

Att ha en titt på begäran från min kod jag visste att allt som krävdes var att ändra den URL som Zend_Oauth_Consumer omdirigeringar. Det verkade det enklaste sättet att göra detta var att åsidosätta authorizationUrl parameter med verifieringsadress från Twitter. Detta gjordes enligt följande:

 $ Config = array (
 "CallbackUrl '=> ... callback-url ...,
 "SITEURL '=>' https: / / twitter.com / oauth"
 "ConsumerKey '=> ... konsument-nyckel ...,
 "ConsumerSecret '=> ... hemlig-nyckel ...,
 );
 $ Konsument = new Zend_Oauth_Consumer ($ config);

 $ Token = $ konsument-> getRequestToken ();
 / / Kvarstår token till lagring
 $ _SESSION ['TWITTER_REQUEST_TOKEN'] = serialisera ($ token);
 $ Konsument-> setAuthorizeUrl ("https: / / twitter.com / oauth / verifiera");
 $ Konsument-> omdirigering ();

När de återvänder till ansökan från Twitter bearbetar vi svaret som så:

 $ Token = $ konsument-> getAccessToken (
 $ _GET,
 unserialize ($ _SESSION ['TWITTER_REQUEST_TOKEN'])
 );

 echo $ token-> user_id.  '::'.  $ Token-> screen_name;

Hur du validera / förvara autentisering är upp till dig, men detta bör framgångsrikt genomföra ett "tecken i med Twitter"-systemet.

Om någon vet av en mer korrekt / mer elegant lösning på detta skulle jag vara mycket intresserade av att höra. Det verkar finnas en brist på information om "logga in med twitter 'med PHP / Zend Framework på internet

One Response to "" Logga in med Twitter "använder Zend Framework"

  1. [...] Har gjort detta med Twitter om service och du kan se en snabb pjäs om att här - Logga in med Twitter med hjälp av Zend Framework. Jag använder min genomförandet där jag ställer in "Auktorisera URL" som jag inte [...]

Lämna ett svar













Panorama Tema av Themocracy

3 besökare online just nu
2 personer, 1 bots, 0 medlemmar
Max besökare idag: 14 på 12:11 UTC
Denna månad: 26 kl 2011/07/05 12:35 UTC
I år: 130 på 28-03-2011 22:40 UTC
Alla tid: 130 på 28-03-2011 10:40 UTC