Fra og med 16. august, vil Twitter ikke lenger støtte den grunnleggende godkjenningsprotokollen for plattformen. Det betyr at den eneste måten å godkjenne brukere vil være gjennom en Twitter-applikasjon. I denne opplæringen viser jeg deg hvordan du bruker Twitter som ett-klikk-autentiseringssystem, akkurat som vi gjorde med Facebook.
Vi må først opprette en ny Twitter-applikasjon.
http://localhost.com/twitter_login.php
(http: // localhost /
vil ikke bli akseptert fordi den ikke har et domenenavn). Nå ser du skjermen som vist nedenfor.
Vi skal bruke Forbrukernøkkel og Forbruker hemmelig verdier kort tid.
Nå som dette er gjort, la oss laste ned et bibliotek. Som vi vil være kodende med PHP, virker det som det beste er twitteroauth; men hvis du bruker et annet språk, finner du andre gode biblioteker her.
Finn twitteroauth
katalog inni zip-filen, og trekk den ut i programmets mappe.
Til slutt, siden vi bruker Twitter for å godkjenne brukere, trenger vi en databasetabell for å lagre disse brukerne. Her er et raskt eksempel på hva vi skal gjøre.
CREATE TABLE 'users' ('id' int (10) usignert IKKE NULL AUTO_INCREMENT, 'oauth_provider' varchar (10), 'oauth_uid' tekst, 'oauth_token' tekst, 'oauth_secret' tekst, 'brukernavn' tekst, PRIMARY KEY id ')) ENGINE = MyISAM DEFAULT CHARSET = latin1;
Legg merke til oauth_token
og oauth_secret
Enger. Twitters OAuth krever pollett
og a token_secret
verdier for å autentisere brukerne, så det er derfor vi inkluderer dem. Med det er vi ferdige med oppsettet!
I dette trinnet vil vi gjøre tre ting:
OAuth-arbeidsflyten starter ved å generere en URL for forespørselen; Brukeren blir omdirigert til denne nettadressen og blir bedt om autorisasjon. Etter å ha gitt det, omdirigerer programmet tilbake til serveren vår med to tokens i nettadresseparametrene, som kreves for godkjenning.
La oss begynne med å inkludere biblioteket og starte en øktbehandler.
kreve ( "twitteroauth / twitteroauth.php"); session_start ();
Deretter la vi opprette en ny TwitterOAuth-forekomst, og gi den forbrukernøkkelen og forbrukerhemmeligheten som Twitter ga oss da vi opprettet applikasjonen. Deretter vil vi be om autentiseringstokenene, lagre dem i økten, og omdirigere brukeren til Twitter for autorisasjon.
// TwitterOAuth-forekomsten $ twitteroauth = ny TwitterOAuth ('YOUR_CONSUMER_KEY', 'YOUR_CONSUMER_SECRET'); // Be om godkjenningstokener, parameteren er nettadressen vi blir omdirigert til $ request_token = $ twitteroauth-> getRequestToken ('http://localhost.com/twitter_oauth.php'); // Lagre dem i sesjonen $ _SESSION ['oauth_token'] = $ request_token ['oauth_token']; $ _SESSION ['oauth_token_secret'] = $ request_token ['oauth_token_secret']; // Hvis alt går bra ... hvis ($ twitteroauth-> http_code == 200) // La oss generere URL og omdirigere $ url = $ twitteroauth-> getAuthorizeURL ($ request_token ['oauth_token']); header ('Location:'. $ url); else // Det er en dårlig ide å drepe skriptet, men vi må vite når det er en feil. dø ('Noe galt skjedde.');
Lagre det som twitter_login.php
, gå til http://localhost.com/twitter_login.php
eller hva ditt lokale vertsnavn er. Hvis alt gikk riktig, bør du bli omdirigert til twitter.com, og du bør se noe slikt.
Klikk tillat, og du blir omdirigert til http://localhost.com/twitter_oauth.php
-- siden vi angir denne nettadressen som en parameter i getRequestToken
uttalelse. Vi har ikke opprettet den filen, så det skal kaste en feil. Opprett den filen, og inkluder deretter biblioteket og start en økt, akkurat som vi gjorde i den første filen.
Deretter trenger vi tre ting:
Så, den første tingen å gjøre i dette skriptet, er å validere disse dataene og omdirigere hvis en av disse variablene er tom.
hvis ! tom ($ _ GET ['oauth_verifier']) &&! tomt ($ _ SESSION ['oauth_token']) &&! tomt ($ _ SESSION ['oauth_token_secret'])) // Vi har alt vi trenger // Noe mangler, gå tilbake til firkant 1 overskrift ('Sted: twitter_login.php');
Nå, hvis alt er satt, inne i betinget vil vi opprette TwitterOAuth-forekomsten, men med tokens blir vi bare som tredje og fjerde parametere; etter det vil vi få tilgangstoken, som er en matrise. Det token er det vi skal lagre i databasen. Til slutt vil vi gjøre en rask test for å se om alt går ut.
// TwitterOAuth eksempel, med to nye parametere vi fikk i twitter_login.php $ twitteroauth = ny TwitterOAuth ('YOUR_CONSUMER_KEY', 'YOUR_CONSUMER_SECRET', $ _SESSION ['oauth_token'], $ _SESSION ['oauth_token_secret']); // La oss be om tilgangstoken $ access_token = $ twitteroauth-> getAccessToken ($ _ GET ['oauth_verifier']); // Lagre det i en økt var $ _SESSION ['access_token'] = $ access_token; // La oss få brukerens info $ user_info = $ twitteroauth-> get ('account / verify_credentials'); // Skriv ut brukerens info print_r ($ user_info);
Hvis ingenting går galt, vil print_r
skal vise brukerens data. Du kan få brukerens ID med $ User_info-> id
, hans eller hennes brukernavn med $ User_info-> SCREEN_NAME
; Det er også en mengde annen info der.
Det er veldig viktig å innse at oauth_verifier
har ikke blitt brukt før dette. Hvis du ser brukerens informasjon riktig og deretter laster siden på nytt, vil skriptet kaste en feil siden denne variabelen er brukt. Bare gå tilbake til twitter_login.php
og det vil automatisk generere et nytt friskt token.
Nå som vi har brukerens info, kan vi gå videre og registrere dem, men først må vi sjekke om de eksisterer i vår database. La oss begynne med å koble til databasen. Legg til disse linjene i skriptets begynnelse.
mysql_connect ('localhost', 'YOUR_USERNAME', 'YOUR_PASSWORD'); mysql_select_db ( 'YOUR_DATABASE');
Endre databaseinformasjonen etter behov. Nå, like under hvor vi henter brukerens info, må vi sjekke for brukeren i vår database. Hvis han eller hun ikke er der, skriver vi inn informasjonen. Hvis brukeren har blitt registrert, må vi oppdatere tokens, fordi Twitter har generert nye og de vi har i databasen, er nå ubrukelige. Endelig setter vi brukerens info til sesjonen vars og viderekobler til twitter_update.php
.
hvis (isset ($ user_info-> feil)) // Noe er galt, gå tilbake til firkant 1 overskrift ('Location: twitter_login.php'); ellers // La oss finne brukeren med sin ID $ query = mysql_query ("VELGE * FRA brukere WHERE oauth_provider = 'twitter' OG oauth_uid =". $ user_info-> id); $ result = mysql_fetch_array ($ query); // Hvis ikke, la oss legge det til i databasen hvis (tomt ($ resultat)) $ query = mysql_query ("INSERT INTO brukere (oauth_provider, oauth_uid, brukernavn, oauth_token, oauth_secret) VALUES ('twitter', $ user_info- > id, '$ user_info-> screen_name', '$ access_token [' oauth_token ']', '$ access_token [' oauth_token_secret ']') "); $ query = mysql_query ("SELECT * FROM users WHERE id =". mysql_insert_id ()); $ result = mysql_fetch_array ($ query); andre // Oppdater tokens $ query = mysql_query ("UPDATE brukere SET oauth_token = '$ access_token [' oauth_token ']', oauth_secret = '$ access_token [' oauth_token_secret ']' HVOR oauth_provider = 'twitter' OG oauth_uid = $ user_info-> id "); $ _SESSION ['id'] = $ resultat ['id']; $ _SESSION ['brukernavn'] = $ resultat ['brukernavn']; $ _SESSION ['oauth_uid'] = $ resultat ['oauth_uid']; $ _SESSION ['oauth_provider'] = $ resultat ['oauth_provider']; $ _SESSION ['oauth_token'] = $ resultat ['oauth_token']; $ _SESSION ['oauth_secret'] = $ resultat ['oauth_secret']; header ('Location: twitter_update.php');
Merk at disse spørringene ikke er validert; Hvis du forlater dem som de er, forlater du databasen din sårbar. Til slutt, under databasetilkoblingen, bør vi sette en sjekk for å bekrefte at brukeren er logget inn.
hvis (! tomt ($ _ SESSION ['brukernavn'])) // Bruker er logget inn, viderekobler overskrift ('Sted: twitter_update.php');
Du kan nå hilse brukeren ved sitt brukernavn.
Hallo =(!empty($_SESSION['username']) ? '@' . $_SESSION['username'] : 'Guest'); ?>
La oss komme til den morsomme siden: oppdatering, etterfølging og lesing.
Det er over tjue kategorier av ressurser tilgjengelig: tidslinje, tweets, brukere, trender, lister, direkte meldinger, etc. Hver har en rekke metoder, du kan sjekke dem alle i den offisielle dokumentasjonen. Vi kommer til det grunnleggende, da de fleste av disse funksjonene er tilgjengelige på samme måte.
På samme måte som de to andre skriptene, må vi opprette TwitterOAuth-forekomsten, inkludert variablene i sesjonen.
Hvis (! tomt ($ _ SESSION ['brukernavn'])) $ twitteroauth = ny TwitterOAuth ('YOUR_CONSUMER_KEY', 'YOUR_CONSUMER_SECRET', $ _SESSION ['oauth_token'], $ _SESSION ['oauth_secret']);
Vi starter med brukerens tidslinje. Referansen forteller oss at banen er statuser / home_timeline
; ignorere versjon og format, biblioteket vil ta vare på det.
$ home_timeline = $ twitteroauth-> get ('statuses / home_timeline'); print_r ($ home_timeline);
Det vil få deg tidslinjen. Du kan hente hvert element med en for hver
sløyfe. Henvisningen angir imidlertid noen valgfrie parametere som telle
, som begrenser hvor mange tweets vil bli hentet. Faktisk, få
Den andre parameteren er en rekke valgmuligheter, så hvis du vil hente de siste førti tweets, her er koden:
$ home_timeline = $ twitteroauth-> get ('statuses / home_timeline', array ('count' => 40));
Du kan også se andres tidslinje, så lenge det ikke er beskyttet. statuser / user_timeline
krever enten brukerens id eller skjermnavn. Hvis du vil sjekke @nettuts tidslinje, må du bruke følgende utdrag:
$ nettuts_timeline = $ twitteroauth-> get ('statuses / user_timeline', array ('screen_name' => 'nettutsalg'));
Som du kan se, etter å ha godkjent, er lesing tidslinjer en bris.
Med vennskap kan du sjekke om en bruker følger en annen, så vel som å følge eller ufølge andre brukere. Denne koden vil sjekke om du følger meg og og vil opprette følg hvis ikke.
Men først, sjekk vennskap / eksisterer
og vennskap / opprette
henvisning. Legg merke til noe? vennskap / opprette
Metoden er POST. Heldigvis inneholder biblioteket en post()
funksjon, som fungerer akkurat som få()
funksjon; Hovedforskjellen er det få()
er for å lese og post()
er for å lage, slette eller oppdatere.
Uansett, vennskap / eksisterer
krever to parametere: user_a
og user_b
, og vennskap / opprette
krever bare en, heller ikke skjerm navn
eller bruker-ID
.
$ follow_faelazo = $ twitteroauth-> get ('vennskap / eksisterer', array ('user_a' => $ _SESSION ['brukernavn'], 'user_b' => 'faelazo')); hvis (! $ følger_faelazo) echo 'Du følger IKKE @faelazo!'; $ twitteroauth-> post ('vennskap / opprett', array ('screen_name' => 'faelazo'));
Du kan unfollow en bruker med i utgangspunktet samme kode som skaper en følge, bare erstatte skape
med ødelegge
:
$ follow_faelazo = $ twitteroauth-> get ('vennskap / eksisterer', array ('user_a' => $ _SESSION ['brukernavn'], 'user_b' => 'faelazo')); hvis ($ follows_faelazo) echo 'Du følger @faelazo! Fortsett å unfollow ... '; $ twitteroauth-> post ('vennskap / ødelegge', array ('screen_name' => 'faelazo'));
Dette er trolig den mest interessante delen, siden det er Twitters kjernen: Publisering av en oppdatering, som du kanskje har forestilt deg, er ganske enkel. Stien er statuser / oppdatering
, Metoden er POST (siden vi ikke leser), og det nødvendige argumentet er status
.
$ twitteroauth-> post ('statuses / update', array ('status' => 'Hei Nettuts + +'));
Nå går du til din Twitter-profilside, og du får se tweetet ditt.
La oss retweet @Nettuts 'oppdatering og annonsere HTML 5-konkurransen; status-ID er 19706871538
og referansen forteller oss at banen er statuser / retweet /: id
, hvor i : id
En del er status-ID, vi vil bli retweeting. Metoden er POST og det krever ikke ytterligere parametere.
$ Twitteroauth-> innlegget ( 'statuser / retweet / 19706871538');
Hvis du vil slette en tweet, må du passere status-IDen du vil ødelegge i den første parameteren, akkurat som retweeting. Hvis tweetens ID er 123456789, vil koden for å ødelegge være.
$ Twitteroauth-> innlegget ( 'statuser / ødelegge / 123456789');
Selvfølgelig kan denne koden bare slette tweets laget av den autentiserte brukeren.
Twitters API er ganske lett å forstå; det er langt mer dokumentert enn til og med Facebook (selv om Facebook tilbyr et eget bibliotek). Dessverre er godkjenningen ikke så glatt som vi kanskje håper, avhengig av øktdata.
En ting verdt å merke seg er at når en Twitter-bruker har blitt autorisert (forutsatt at appen har lese- og skrive-tillatelser), har du god kontroll over denne kontoen. Hvis du endrer noe på vegne av brukeren uten hans tillatelse, vil du opprette problemer. Bruk det med forsiktighet!
API-endringene som kommer til Twitter, vil nekte grunnleggende godkjenning; Twitter fokuserer på å stoppe utallige svindel som lure brukerne til å gi opp sine påloggingsinformasjon. OAuth er løsningen; og hvis du har jobbet gjennom Facebook Connect-opplæringen, kan du nå gi dine nettsider eller app-brukere en rask innlogging uten legitimasjon, ved å velge mellom de to mest brukte sosiale nettverkene. Hvor kult er det?