Så här autentiserar du användare med Twitter OAuth 2.0

I den här handledningen lär du dig att använda Twitter API 1.1 och OAuth 2.0 för att autentisera användare av din ansökan och publicera en test tweet.

Varför behöver vi en verifieringsram?

För att skapa tjänster som fungerar på uppdrag av användarnas konton och gör det verkligen säkert och enkelt att utveckla, behöver vi tre saker:

  • Twitter ansökan
  • REST API
  • tillgång till användarkontot

För att sätta bitarna ihop i en arbetsmekanism behöver vi en autentiseringsram. Som Twitter-standard identifierar REST API Twitter applikationer och användare som använder OAuth.

Vad är OAuth?

Enligt oauth.net är OAuth:

Ett öppet protokoll för att tillåta säker auktorisering i en enkel och standard metod från webb-, mobil- och skrivbordsprogram.

OAuth är den vanligaste auktoriseringsramen idag och används för de flesta vanliga webbapplikationer och tjänster, som GitHub, Google, Facebook och, naturligtvis, Twitter.

Denna ram tillåter användare att ge dig tillstånd att agera på deras vägnar utan att dela lösenordet för kontot. Efter att användaren har gett tillstånd, returnerar OAuth dig ett token. Det här tillägget ger tillgång till att göra förfrågningar på uppdrag av användaren.

Token från Twitter har ingen utgångstid, men de kan bli ogiltiga efter att användaren har avvisat din ansökan. Twitter-besättningen kan också avbryta din ansökan om du överskrider gränserna eller utför andra åtgärder som bryter mot villkoren för API. Du kan granska dessa villkor för att få veta mer om specifika överträdelser.

Skapa din ansökan

Som ett första steg måste vi skapa en ny Twitter-applikation. Låt oss skapa en ny applikation på sidan för programhantering.

Efter att ha loggat in måste du klicka på Skapa ny app knappen och fyll i formuläret med dina ansökningsuppgifter: namn, beskrivning, webbplats och återuppringningsadress.

Vad är återuppringningsadressen? När användarna accepterar vår ansökan för att använda sitt konto kommer webbläsaren att leverera dem till den här webbadressen med OAuth-verifieraren i GET. Och vi kommer att använda denna verifierare för att få användarens åtkomsttoken.

Lägga märke till: Glöm inte att ersätta webbplatsen och återuppringningsadressen med din offentliga domän när du delar din ansökan med riktiga användare.

Efter att du fyllt i formuläret kan du signera utvecklaravtalet och klicka på Lämna knappen för att skapa din ansökan.

grattis! Nu har du tillgång till en sida där du kan titta på detaljerna och redigera inställningar för din nya applikation, ändra behörigheter och hantera nycklar och åtkomsttoken. Navigera till Nycklar och åtkomsttoken fliken och hitta Konsumentnyckel och KonsumenthemlighetVi kommer att använda dem inom kort.

Start kodning

Välja ett bibliotek

Innan vi börjar kodas måste vi välja ett bibliotek för att arbeta med Twitter API och Oauth 2.0. Du kan få en översikt över de befintliga biblioteken på Twitter-utvecklarens sida. I denna handledning använder jag TwitterOAuth som den mest populära och enkel att använda. Vi kan installera det från kommandoraden med Kompositör:

kompositör kräver abraham / twitteroauth

Konfigfilen

Låt oss skapa en ny fil som heter config.php för att lagra all statisk data. Ange följande detaljer i din ansökan.

 'EPKXCv3tUsq9DoxwZy616Cy1o', 'consumer_secret' => 'UXnAeXkCZFIOnLVQCS4LFR7GsCTrOiU77OGSFL3dUoYZiTxU8x', // 'url_login' => 'http: //localhost/twitter_login.php', 'url_callback' => 'http: //localhost/twitter_callback.php',] ;

Starta inloggningsskriptet

Skapa nu en ny fil med namnet twitter_login.php och inkludera Composer autoload, TwitterOAuth bibliotek, start session och importera inställningarna för vår applikation från config filen.

Begär Auth

I den här delen måste vi begära att användaren godkänner vår ansökan. För att nå detta mål ska vi skapa ett objekt i TwitterOAuth-klassen, begära ett tecken på ansökan från Twitter API, få URL-adressen till godkännasidan med hjälp av denna token och omdirigera användaren till den här sidan.

// skapa TwitterOAuth-objekt $ twitteroauth = ny TwitterOAuth ($ config ['consumer_key'], $ config ['consumer_secret']); // request token of application $ request_token = $ twitteroauth-> oauth ('oauth / request_token', ['oauth_callback' => $ config ['url_callback']])); // kasta undantag om något har gått fel om ($ twitteroauth-> getLastHttpCode ()! = 200) kasta nytt \ Undantag ('Det uppstod ett problem som utförde denna förfrågan');  // spara token av ansökan till session $ _SESSION ['oauth_token'] = $ request_token ['oauth_token']; $ _SESSION ['oauth_token_secret'] = $ request_token ['oauth_token_secret']; // skapa webbadressen för att begära att auktorisera vår ansökan $ url = $ twitteroauth-> url ('oauth / authorize', ['oauth_token' => $ request_token ['oauth_token']])); // och omdirigera rubriken ("Plats:". $ url);

Notera att vi sparar programtoken till sessionen, eftersom vi behöver dem i nästa steg.

Nu kan du köra det här skriptet i webbläsaren, och om allt går bra kommer du att dirigeras till Twitter API-sidan med något liknande:

Du kommer att omdirigeras till återuppringningsadressen genom att klicka på Godkänn app knapp. Men inte så snabbt först måste vi skapa ett återuppringningsskript.

Hämta användarnyten

Vårt nästa steg är att skapa ett återuppringningsskript. Låt oss skapa en ny fil som heter twitter_callback.php och inkludera TwitterOAuth-biblioteket, konfigurationsfilen och start-sessionen som vi gjorde i föregående del.

Då ska vi kolla om vi fick en authverifieringsparameter från Twitter API. Om något saknas, kommer vi att omdirigera användaren för att logga in igen.

$ oauth_verifier = filter_input (INPUT_GET, 'oauth_verifier'); om (tomt ($ oauth_verifier) ​​|| tomt ($ _ SESSION ['oauth_token']) || tomt ($ _ SESSION ['oauth_token_secret'])) // något saknas, gå och logga in igen header ('Plats:'. $ config [ 'url_login']); 

Nästa steg är att ansluta till Twitter API med programtoken och begära en användar token med hjälp av OAuth verifieraren:

// ansluta med programtoken $ connection = ny TwitterOAuth ($ config ['consumer_key'], $ config ['consumer_secret'], $ _SESSION ['oauth_token'], $ _SESSION ['oauth_token_secret']); // begära användar token $ token = $ connection-> oauth ('oauth / access_token', ['oauth_verifier' => $ oauth_verifier]);

Och nu har du användarkoden lagrad i $ token variabel.

Så här använder du denna Token

Vi kan använda denna symbol för att agera på användarens konto. Vi kan lagra den i sessionen eller spara i databasen för att hantera användarkontot nästa gång utan att begära tillstånd. För att ansluta till Twitter API med användarnoken måste du bara göra det här:

$ twitter = ny TwitterOAuth ($ config ['consumer_key'], $ config ['consumer_secret'], $ token ['oauth_token'], $ token ['oauth_token_secret']);

Skapa ett test Tweet

För att skapa en ny tweet från användarens konto behöver vi bara lägga till en liten bit kod:

$ status = $ twitter-> post ("statuses / update", ["status" => "Tack @nedavayruby, nu vet jag hur man autentiserar användare med Twitter på grund av denna handledning https://goo.gl/N2Znbb" ]); echo ('Skapat ny status med #'. $ status-> id. PHP_EOL);

Du kan också få information om statusen från svaret på det API som lagrats i $ status variabel.

Slutligen är vi redo att testa vårt manus. 

Slutsats

Som du kan se är det inte så svårt att skapa en Twitter-applikation. Nu har du alla API-funktioner att använda: du kan skapa nya tweets, ladda upp media, hantera vänskap och så vidare.

Tänk på att nu kan du samla OAuth-tokens och du har stor makt att agera på dina användares vägnar. Men med stor makt kommer ett stort ansvar - det är därför du behöver hantera denna situation graciöst och tjäna en bra användarupplevelse.

Om du har frågor eller feedback, skriv gärna dem i kommentarfältet. Jag ser fram emot det och försöker svara på alla dina kommentarer.

Ytterligare läsning och relaterade länkar

Observera att jag har utarbetat ett fullständigt projekt för denna handledning på GitHub, och du kan titta på den med en länk på höger sida av webbplatsen eller använda den här länken.

  • Twitter-appar
  • Twitter REST API
  • Twitter OAuth översikt
  • TwitterOAuth PHP bibliotek
  • Andra Twitter-bibliotek
  • OAuth hemsida
  • Den ursprungliga artikeln om hur man autentiserar användare med Twitter OAuth.