Contenido

Postear en Twitter con PHP

11 Abr

+ 9

Ya existen plugins y herramientas que interactuan con Twitter perfectamente. Pero, ¿que pasa si necesitas únicamente postear desde PHP en twitter? Pues aqui tienes una función que te puede facilitar la tarea, sin depender de librerías ni plugins para hacerlo.


<?php
function postToTwitter($username,$password,$message){

    $host = "http://twitter.com/statuses/update.xml?status=".urlencode(stripslashes(urldecode($message)));

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $host);
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    curl_setopt($ch, CURLOPT_POST, 1);

    $result = curl_exec ($ch); //Ojo, hay un espacio en exec
    $resultArray = curl_getinfo($ch);
    curl_close($ch);
    if($resultArray['http_code'] == "200"){
        echo "<br />OK! postedo en http://twitter.com/".$username."/<br />";
    } else {
        echo "<br />Error! ha ocurrido un problema<br />";
    }
}
Uso:
 postToTwitter("USUARIO","PASSWORD","Posteando desde PHP");
?>

Fácil, ¿no?. Cambia USUARIO y PASSWORD por tus datos y podrás postear en Twitter desde PHP 😀

  • Muy buena función ;P.

    Pero tengo una duda que no consigo resolver, como cambiar lo de donde posteas, como sale cuando lo haces via web o twitterrific. Que es modificando el user agent?

  • Pos sta chido… pero pos usa curl y no todos los servers la traen integrada XD

    salu2

  • #1 La verdad es que no tengo ni idea, aunque si tuviera que hacerlo seguramente forzaría a cambiar el user agent como dices.
    Supongo que con algo como esto debería funcionar.

    
    curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
    
  • Joder anieto, ultimamente te encuentro en google sobre todo lo que busco.
    Hoy por ejemplo me sales en todas! xD
    Widgets, CSS, Twitter, AJAX…

    Veo que es el curl del grupo de google, no?
    http://twitter-development-talk.googlegroups.com/web/twitterCurl.phps.txt

    Si tu server no tiene CURL creo que se puede usar «snoopy» -yo solo he usado CURL, no he mirado esta clase aún- que además suele venir con la mayoría de CMS, por ejemplo WordPress.

    Un saludo y gracias siempre por tu trabajo Anieto, eres una referencia imprescindible 😉

  • Añadir lo siguiente si queréis que siga funcionando este codigo curl_setopt($ch, CURLOPT_HTTPHEADER, array(‘Expect:’));

  • Tengo un problema con los acentos.
    Al publicar post con eñes y acentos se come las letras siguientes a la del acento o la eñe.
    ¿cómo puedo solucionarlo?

    El código que utilizo es éste:

    <?php
    function postToTwitter($username,$password,$message){

    $host = "http://twitter.com/statuses/update.xml?status=&quot;.urlencode(stripslashes(urldecode($message)));

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $host);
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));

    $result = curl_exec ($ch); //Ojo, hay un espacio en exec
    $resultArray = curl_getinfo($ch);
    curl_close($ch);
    if($resultArray['http_code'] == "200"){
    echo "OK! postedo en http://twitter.com/«.$username.»/»;
    } else {
    echo «Error! ha ocurrido un problema»;
    }
    }

    postToTwitter(«USUARIO»,»PASSWORD»,»Posteando desde PHP con eñes y aceéntos»);
    ?>

    Y el resultado que me da es éste:
    Posteando desde PHP con eñy aceéos

    Un saludo y gracias por tu trabajo Anieto

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.