Slik godkjenner du brukere med Twitter OAuth 2.0

I denne opplæringen lærer du hvordan du bruker Twitter API 1.1 og OAuth 2.0 for å autentisere brukere av søknaden din og publisere en test tweet.

Hvorfor trenger vi en godkjenningsramme?

For å skape tjenester som fungerer på vegne av brukernes kontoer og gjør det veldig sikkert og enkelt å utvikle, trenger vi tre ting:

  • Twitter søknad
  • REST API
  • tilgang til brukerkontoen

For å sette bitene sammen i en arbeidsmekanisme, trenger vi et godkjenningsramme. Som en Twitter-standard identifiserer REST API Twitter applikasjoner og brukere som bruker OAuth.

Hva er OAuth?

Ifølge oauth.net er OAuth:

En åpen protokoll for å tillate sikker autorisasjon i en enkel og standard metode fra web-, mobil- og skrivebordsprogrammer.

OAuth er den vanligste autorisasjonsrammen i dag, og den brukes på de fleste vanlige webprogrammer og tjenester, som GitHub, Google, Facebook og, selvfølgelig, Twitter.

Dette rammeverket lar brukerne gi deg tillatelse til å handle på deres vegne uten å dele kontopassordet. Etter at brukeren har gitt tillatelse, returnerer OAuth deg et token. Dette symbolet gir tilgang til å stille forespørsler på vegne av brukeren.

Token fra Twitter har ikke en utløpsdato, men de kan bli ugyldige etter at brukeren har avvist søknaden din. Twitter-mannskapet kan også suspendere søknaden din hvis du overskrider grenser eller utfører andre handlinger som bryter med API-vilkårene. Du kan se gjennom disse vilkårene for å finne ut mer om bestemte brudd.

Lag din søknad

Som et første skritt må vi sette opp en ny Twitter-applikasjon. La oss lage et nytt program på programhåndteringssiden.

Etter at du har logget inn, må du klikke på Opprett ny app knappen og fyll ut skjemaet med dine søknadsdetaljer: navn, beskrivelse, nettside og tilbakeringingsadresse.

Hva er tilbakekallingsadressen? Når brukere godtar programmet vårt for å bruke sin konto, vil nettleseren levere dem til denne nettadressen med OAuth-verifikatoren i GET. Og vi vil bruke denne verifikatoren for å få brukerens tilgangstoken.

Legge merke til: Ikke glem å erstatte nettsiden og tilbakekallingsadressen med det offentlige domenet ditt når du deler programmet med ekte brukere.

Etter at du har fylt ut skjemaet, kan du signere utvikleravtalen og klikke på Sende inn knappen for å lage din søknad.

Gratulerer! Nå har du tilgang til en side der du kan se på detaljene og redigere innstillinger for det nye programmet, endre tillatelser og administrere nøkler og få tilgang til tokens. Naviger til Taster og tilgangstegn fanen og finn Forbrukernøkkel og ForbrukerhemmeligVi skal bruke dem snart.

Start koding

Velge et bibliotek

Før du begynner å kode, må vi velge et bibliotek for å jobbe med Twitter API og Oauth 2.0. Du kan få oversikt over eksisterende biblioteker på Twitter-utvikler siden. I denne opplæringen bruker jeg TwitterOAuth som den mest populære og enkel å bruke. Vi kan installere det fra kommandolinjen med Composer:

komponist krever abraham / twitteroauth

Konfigfilen

La oss lage en ny fil som heter config.php for å lagre alle statiske data. Angi følgende detaljer i søknaden din.

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

Start påloggingsskriptet

Opprett nå en ny fil med navnet twitter_login.php, og ta med Composer autoload, TwitterOAuth bibliotek, start økt, og importer innstillingene av programmet fra config filen.

Forespørsel Auth

I denne delen må vi be brukeren om å godkjenne vår søknad. For å nå dette målet vil vi opprette et objekt av TwitterOAuth-klassen, be om et token av programmet fra Twitter-API, få URLen til autoriseringssiden ved hjelp av dette tokenet, og omdirigere brukeren til denne siden.

// opprett 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']])); // kaste unntak hvis noe gått galt hvis ($ twitteroauth-> getLastHttpCode ()! = 200) throw new \ Unntak ('Det oppstod et problem som utførte denne forespørselen');  // lagre token av søknad til økt $ _SESSION ['oauth_token'] = $ request_token ['oauth_token']; $ _SESSION ['oauth_token_secret'] = $ request_token ['oauth_token_secret']; // generere nettadressen for å gjøre forespørsel om å godkjenne vår søknad $ url = $ twitteroauth-> url ('oauth / authorize', ['oauth_token' => $ request_token ['oauth_token']])); // og omdirigere header ('Location:'. $ url);

Legg merke til at vi lagrer programtokener til økten, fordi vi trenger dem i neste trinn.

Nå kan du kjøre dette skriptet i nettleseren, og hvis alt går bra, blir du omdirigert til Twitter API-siden med noe slikt:

Du blir omdirigert til tilbakekallingsadressen ved å klikke på Tillat app knapp. Men ikke så fort-først må vi lage et tilbakeringingsskript.

Få brukertokenet

Vårt neste skritt er å lage et tilbakeringingsskript. La oss lage en ny fil som heter twitter_callback.php og ta med TwitterOAuth-biblioteket, konfigurasjonsfilen og start økten som vi gjorde i forrige del.

Deretter vil vi sjekke om vi mottok en auth verifier parameter fra Twitter API. Hvis noe mangler, vil vi omdirigere brukeren til å logge på igjen.

$ oauth_verifier = filter_input (INPUT_GET, 'oauth_verifier'); hvis (tomt ($ oauth_verifier) ​​|| tomt ($ _ SESSION ['oauth_token']) || tomt ($ _ SESSION ['oauth_token_secret'])) // noe mangler, gå og logg inn igjen header ('Location:'. $ konfig [ 'url_login']); 

Det neste trinnet er å koble til Twitter API med applikasjons token og be om en bruker token ved hjelp av OAuth verifier:

// Koble til programtoken $ Connection = Ny TwitterOAuth ($ config ['consumer_key'], $ config ['consumer_secret'], $ _SESSION ['oauth_token'], $ _SESSION ['oauth_token_secret']); // forespør bruker token $ token = $ connection-> oauth ('oauth / access_token', ['oauth_verifier' => $ oauth_verifier]);

Og nå har du brukertokenet lagret i $ token variabel.

Slik bruker du denne token

Vi kan bruke denne token til å handle på vegne av brukerens konto. Vi kan lagre den i økten eller lagre i databasen for å administrere brukerkontoen neste gang uten å be om tillatelse. For å koble til Twitter API med bruker token, trenger du bare å gjøre dette:

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

Opprett en test Tweet

For å opprette en ny tweet fra brukerens konto må vi bare legge til et lite stykke kode:

$ status = $ twitter-> post ("statuses / update", ["status" => "Takk @nedavayruby, nå vet jeg hvordan du autentiserer brukere med Twitter på grunn av denne opplæringen https://goo.gl/N2Znbb" ]); ekko ('Opprettet ny status med #'. $ status-> ID. PHP_EOL);

Du kan også få detaljer om statusen fra svaret på APIen som er lagret i $ status variabel.

Til slutt er vi klare til å teste vårt skript. 

Konklusjon

Som du kan se, er det ikke så vanskelig å lage et Twitter-program. Nå har du alle API-funksjonene som skal brukes: du kan opprette nye tweets, laste opp media, administrere vennskap og så videre.

Husk at nå kan du samle OAuth-tokens og du har god makt til å handle på vegne av brukerne. Men med stor makt kommer stort ansvar - derfor må du håndtere denne situasjonen grasiøst og gi en god brukeropplevelse.

Hvis du har spørsmål eller tilbakemelding, kan du skrive dem i kommentarfeltet. Jeg gleder meg til det og vil prøve å svare på alle kommentarene dine.

Videre lesing og beslektede lenker

Merk at jeg har utarbeidet et fullstendig prosjekt for denne opplæringen på GitHub, og du kan se på den med en link på høyre side av nettstedet eller ved å bruke denne linken.

  • Twitter apps
  • Twitter REST APIer
  • Twitter OAuth oversikt
  • TwitterOAuth PHP bibliotek
  • Andre Twitter-biblioteker
  • OAuth hjemmeside
  • Den opprinnelige artikkelen om hvordan du godkjenner brukere med Twitter OAuth.