tisdag 2 mars 2010

Posta på Twitter med PHP

Om du vill göra en statusuppdatering på twitter med php så går det alldeles utmärkt med Twitters REST API.

Här är en enkel funktion som använder cURL i php:

<?php
function tweet($twitterUser,$twitterPass,$tweet){
   $url = "http://twitter.com/statuses/update.xml";
   $data = "status=".urlencode(utf8_encode($tweet));
   $ch = curl_init($url);
   curl_setopt($ch, CURLOPT_POST, 1);
   curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
   curl_setopt($ch, CURLOPT_HEADER, 0);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($ch, CURLOPT_USERPWD, $twitterUser.":".$twitterPass);
   curl_exec($ch);
   $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
   curl_close($ch);
   if ($httpcode == 200) {
     return true;
   }else{
     return false;
   }
}
?>

Och du anropar funktionen såhär:

<?php
   tweet("MittTwitterNamn",
         "MittHemligaTwitterLösen",
         "Missa inte mitt inlägg på http://kodkodkod.se");
?>

Om du inte har stöd för cURL på ditt webbhotell borde det vara ganska enkelt att skriva om funktionen så att den använder fopen istället.

Pusha använder vi detta sätt för att posta heta länkar till @PushaHett på twitter. Observera att denna funktion är lämpligast att använda om du vill posta statusuppdateringar på konton som du ansvarar för. Om du vill låta dina användare posta statusuppdateringar på sina egna twittersidor från din sajt bör du implementera OAuth istället för att fråga användarna efter deras lösenord.

7 kommentarer:

  1. va enkelt det va. När jag skulle göra detta engång så tog det mig en halvdag att förstå.. :)

    Finns det något sätt att skapa en _POST istället till Twitter, sedan får användaren logga in på Twitter och posta själv istället, dvs att tweeten bara fylls i för användaren men han måste submita själv.

    SvaraRadera
  2. Kul att höra :)

    Om du bara vill att det ska fyllas i för användaren kan du använda en vanlig länk med en querystring såhär:

    http://twitter.com/home/?status=Fyll+i+detta

    SvaraRadera
  3. jaha, perfekt! Vet du om man kan man göra på samma sätt till facebook också? Försökte söka efter det men hittade inget direkt av värde.

    SvaraRadera
  4. Du kan göra liknande för att posta länkar på facebook:
    http://www.facebook.com/sharer.php?u=http://www.kodkodkod.se

    Men status vet jag inte hur man gör. Borde gå dock.

    SvaraRadera
  5. Hittade koden på nyhetskanalen.se:
    http://www.facebook.com/share.php?u=http://www.nyhetskanalen.se/1.1536294/2010/03/02/tigertext_smstjanst_for_den_otrogne

    SvaraRadera
  6. haha, missade att det redan fanns svar..

    SvaraRadera
  7. Tack så mycket för ett fantastiskt bra inlägg! Kul att du startade en blogg med supertips!

    SvaraRadera