Tidligere har det været utroligt nemt at sende tweets fra PHP. En simpel kald med cURL og så var tweetet afsted. Siden udgangen af August har Twitter dog lukket for denne type adgang til Twitter API. Dette betyder at der nu skal bruges oAuth for at kommunikere med Twitters API. Kort fortalt er oAuth en protokol der tillader sikker kommunikation mellem applikationer og et API, hvad enten det måtte være mellem et PHP script eller et desktop program og en API.
Som sagt er PHP oAuth og Twitter lidt mere besværligt end det twitter kaldte “basic authentication”. Før skulle man i bund og grund kun bruge sit twitter password og brugernavn, og så kunne du sende et Tweet. Med det lidt større besvær kommer dog også meget højere sikkerhed, så dette skift bør alle faktisk være glade for.
En klasse til at kommunikere med Twitter fra PHP
Da oAuth bliver lidt langhåret fandt jeg hurtig en klasse som allerede fungerede rigtigt godt nemlig Abraham twitter oauth – med denne bliver det hurtigt meget nemmere at sende tweets fra PHP, og man slipper for at opfinde den dybe tallerken igen. Dog skal du stadig lige et par trin igennem før dit PHP Script kan tweete igen.
Før dit script kan kommunikere med twitter skal det registreres som en applikation, dette gøres på følgende måde:
- Gå til http://dev.twitter.com og log ind med din Twitter konto, herefter klik Register an application
- Udfyld formularen, her er det vigtigt du udfylder din applikationsnavn ordentligt da denne bliver vist hver gang du tweeter. Samt at du afkrydser “Read & Write” i Default access type. Se evt. Screenshot her.
- Nu har du registreret din app. Og nu skal du bruge 4 nøgler før du kan sende tweets fra PHP. Disse nøgler får du ved at trykke. “View Your Applications” -> Edit Details – i bunden (ca) står din “Consumer Key” og “Consumer Secret” disse to nøgler kopiere du over i dit dokument.
- Klik “My Access token” i højremenuen, og kopier ligeledes “Access token (oauth_token)” og “Access Token Secret (oauth_token_secret)
Med disse 4 trin er du nu klar til at bruge klassen Abraham twitter oauth. Når du har hentet og udpakket filen finder du de to filer twitteroauth/twitteroauth.php og twitteroauth/OAuth.php. Herefter skal du blot inkludere twitteroauth.php i dit script, og du er klar til at sende tweets afsted med et simpelt klassekald:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php //Dine 4 nøgler som du fik i trin 3 og 4 $consumerKey = 'Din consumer key'; $consumerSecret = 'Din consumer secret'; $oAuthToken = 'Dit Access token'; $oAuthSecret = 'Din access token secret'; //inkluder klassen require_once($_SERVER['DOCUMENT_ROOT'].'/sti/til/twitteroauth.php'); //start ny instans $twitter = new TwitterOAuth($consumerKey, $consumerSecret, $oAuthToken, $oAuthSecret); //send et tweet $twitter->post('statuses/update', array('status' => 'Hello World fra PHP og oAuth')); ?> |
Når du sender Tweets fra scriptet vil det ikke længere stå som være sendt via Twitter Api, men i stedet det navn du angav da du registrerede applikationen. Mine tweets kommer fx fra Codenerds Web Realm, og det er da lidt cool
Twitter klassen kan også bruges til andet end at sende et enkelt tweet, fx kan du slette tweets, og der er også indbygget funktioner til at autorisere andre brugere end dig selv, hvis du fx ønsker at lave en tjeneste til flere brugere. Disse metoder må du i første omgang læse om i klassens dokumentation
Nb. Hvis du blot ønsker at tweete dine blogindlæg, så kan du nemmere tilmelde dig en service som Twitterfeed.
God fornøjelse
Martin det ser jo dejlig let ud når du gør det. Jeg er blevet ret nysgerrig angående Facebook OAuth access token, men er bange for at jeg ikke forstår konceptet med at “obtain an access token”.
Er det noget du kan forklare eller er det bedre jeg bare leder videre på developers.facebook.com og andre steder
Puha, jeg har faktisk aldrig kigget på Facebooks system, det er noget jeg vil tage et kig på på et tidspunkt og så kommer der helt sikkert et blogindlæg om det. Men ifg http://stackoverflow.com/questions/2988236/using-facebook-oauth-2-0-how-do-i-fetch-the-access-token skulle det ikke være så svært.
Beklager jeg ikke har mere på stående fod
Det er helt fint Martin, tak for linket, leger lidt mere med det, måske der også kommer en post fra mig, dog sikkert med en mindre codenerded vinkel på 😉
Martin det ser jo dejlig let ud når du gør det. Jeg er blevet ret nysgerrig angående Facebook OAuth access token, men er bange for at jeg ikke forstår konceptet med at “obtain an access token”.
Er det noget du kan forklare eller er det bedre jeg bare leder videre på developers.facebook.com og andre steder
Rigtig fint indlæg!
Har længe ledt efter en metode til at poste tweets via php, og nu lykkedes det endelig!
Mange tak
Link til seneste blogindlæg: Gratis Sputnik i 30 dage og Sputnik Guld for 1 krone