Salve, salve todos guerreiros de CPD de plantão…

Estava um pouco com preguiça enrolado, por isso a demora no post. Mas agora que aliviei a rotina intensa de séries e filmes de projetos e serviços, consegui elaborar um tuto simples para galera. Fiquei um tempo pensando sobre o que postaria e depois de muito tempo de busca no Google estudo, decidi novamente exaltar nossas mídias sociais! Não, não to falando de Orkut, que já foi tomada por criaturas no mínimo exóticas e se tornou símbolo da porcaria maravilha chamada inclusão digital, estou falando do nosso blue bird, Let’s tweet baby!

Vamos utilizar a linguagem PHP para atualizar nosso ( Vosso? Deles? ) status no Twitter. Neste primeiro POST falaremos só da forma que se atualiza, para um próximo falaremos sobre como recuperar sua timeline. Afinal, todos amamos PHP, twitter e coca-cola, certo ? Só não consegui pensar em como incluir coca-cola neste post. Até o final pensarei em algo.

Utilizaremos a lib cURL para comunicação com o twitter. O twitter oferece diversas API para as mais variadas tarefas e diversas linguagens, nesse caso utilizaremos, obviamente, PHP com a API de atualização de status. Para conhecer as demais APIs verifiquem a documentação: http://apiwiki.twitter.com/. O blue bird utiliza a arquitetura REST para implementação de seus recursos, para mais informações sobre essa arquitetura leia em http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm.

Desenvolveremos um aplicativo rápido, mas como na vida nada é all free, a API tem um limite de 150 requisições por hora, isso no caso de requisições via GET, agora em requisições que utilizam POST, como no nosso exemplo, não estão sujeitas a essa limitação. Então, caso tenha problema durante os testes, pode ser que você foi behind the limits, boy!

Para acesso utilizaremos a lib cURL do PHP, maiores informações: http://php.net/curl . Vamos ao script:


<?php

/**
 *
 * - Função para atualizar status do twitter, recebe usuário, senha e status
 *   para ser atualizado
 *
 * @author Frederico Estrela
 * @since 2010-04-27
 * @version 2010-04-27
 * @access public
 * @param string $username
 * @param string $password
 * @param string $status
 *
 */
function updateStatusTwitter( $username, $password, $status )
{
        // Inicializa o recurso curl e retorna o
        // resource que iremos trabalhar
        $ch = curl_init();

        // Remove espaço de usuário e senha para autenticarmos na API
        $username = trim($username);
        $password = trim($password);

        /*
         * Aqui são removidos os espaços do início e fim da mensagem,
         * codifica o texto para UTF-8
         * ( formato especificado pelo Twitter )
         * e codifica para caracteres válidos a serem passados na URL
         */
        $status = urlencode(utf8_encode(trim($status)));

        // Verifica se a mensagem passou de 140 caracteres,
        // se passar remove o excesso!
        $status = strlen($status) > 140 ? substr( $status, 0, 140 ) : $status;

        /*
         * URL de atualização do status,
         * podemos definir update.(xml|json), isso
         * indicará em qual formato receberemos o
         * retorno de nossa atualização
         */
        $host = 'http://twitter.com/statuses/update.xml?status=' . $status;

        // Aqui temos definição de algumas diretivas da cURL

        // A URL que iremos obter
        curl_setopt($ch, CURLOPT_URL, $host);
        // Incrementa o número de informações
        // enviadas para a saída
        curl_setopt($ch, CURLOPT_VERBOSE, 1);
        // Define que a saída da requisição
        // vai ser retornada em um string,
        // ao invés de gerar uma saída direta
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        // Usuário e senha para autenticação..
        curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
        // Versão do cabeçalho HTTP utilizado na requisição
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
        // Define para utilizar método POST na requisição
        curl_setopt($ch, CURLOPT_POST, 1);

        // Efetua a requisição e atribui o retorno
        // a variável $retorno ( No nosso caso XML )
        $retorno = curl_exec($ch);

        // Pegamos informações sobre requisição, inclusive
        // o status do retorno HTTP
        $resultadoFinal = curl_getinfo($ch);

        // Finalizamos o recurso, se não gasta, né ?
        curl_close($ch);

        // Se o índice referente ao retorno HTTP for 200 ( Requisição OK )
        if ( $resultadoFinal['http_code'] == "200" ) {
             echo 'Status atualizado com sucesso <a href="http://twitter.com/'.$username.'">Verifique</a>';
        } else {
             echo "Erro ao atualizar status!";
        }

}

// Chamada de função passando parâmetros necessários
updateStatusTwitter('fred_estrela', 'fred1704', 'Twittando pela API, ferríssimos em PHP rapaz..');

?>

Quando se atualiza o status através da URL especificada, é retornada uma XML com o resultado da atualização. Poderíamos ainda tratar esse retorno e deixar nosso script bem mais elegante.

Como podemos notar, não há segredo na utilização da API, é só saber o que chamar e de que forma. Em breve teremos o post ensinando a recuperar a timeline de cada um. Enjoy it!

Bons tweets a todos! ;D

PS.: Vc que está ai tentando logar com essa senha no meu twitter achando que a publiquei por engano, tá de sacanagem né meu jovem ?




Artigos relacionados:

  1. Computador da década de 80 acessará o Twitter