Classe PHP para acessar API do twitter

* Está forma de acessar a API do twitter está obsoleta, agora é necessário autenticar-se via OAuth.

Olá pessoal, beleza? Nesse artigo pretendo apresentar uma classe bem interessante que simplifica o acesso à API do twitter.

Você pode baixar a classe no site do autor: http://classes.verkoyen.eu/twitter. Lá você pode encontrar também uma pequena documentação (em inglês) de seus métodos.

Abaixo, vamos ver alguns exemplos de como utilizá-la.

Primeiramente, precisamos incluir a classe em nossa aplicação:

// Incluindo a classe
include('twitter.php');

Para utilizar a maioria dos métodos nós precisamos estar logados, portanto:

// Informações de login
$usuario = 'usuario';
$senha = 'senha';
 
// Fazendo conexão com o twitter
$twitter = new Twitter($usuario, $senha);

1. Primeiro exemplo

Conectados ao twitter, vamos a um exemplo simples:

try
{
    // Atualizando nosso status
    $twitter->updateStatus('Mensagem direto da API.');
    echo 'Mensagem enviada com sucesso';
} 
catch(exception $e)
{
    // Se houver algum erro, exibimos a mensagem
    echo $e->getMessage();
}

Nesse exemplo, através do método updateStatus() nós atualizamos nosso status atual no twitter, ou seja, enviamos um tweet. O código está entre o bloco try pois caso ocorra alguma exceção a classe irá nos retornar uma mensagem de erro. Se ocorrer a exceção, o código irá direto para o bloco catch, onde recuperamos a mensagem de erro e a exibimos.

As mensagens de erro estão em inglês, porém você pode alterá-las no arquivo da classe; elas se encontram próximo ao final do arquivo.

2. Segundo exemplo

try
{
    // Selecionando último tweet enviado
    $tweets = $twitter->getUserTimeline(null, null, null, 1);
    // Armazenando ID do tweet
    $ultimoTweetId = $tweets[0]['id'];
    // Removendo tweet
    $twitter->deleteStatus($ultimoTweetId);
    echo 'Último tweet removido com sucesso';
} 
catch(exception $e)
{
    // Se houver algum erro, exibimos a mensagem
    echo $e->getMessage();
}

Através do método getUserTimeline() nós recuperamos nosso último tweet enviado, pois passamos no quarto parâmetro o valor 1, ou seja, recuperamos apenas 1 tweet, mas nós poderíamos recuperar até 20. Logo abaixo, nós armazenamos o ID desse tweet e então através do método deleteStatus() nós removemos ele.

3. Terceiro exemplo

try
{
    // Definindo o outro usuário
    $outroUsuario = 'faael';
    // Se você não estiver seguindo o outro usuário
    if (!$twitter->existsFriendship($usuario, $outroUsuario))
    {
        // Passa a seguir o outro usuário
        $twitter->createFriendship($outroUsuario);
        echo 'Agora você está seguindo ', $outroUsuario;
    }
    else
    {
        // Para de seguir o outro usuário
        $twitter->deleteFriendship($outroUsuario);
        echo 'Você não está mais seguindo ', $outroUsuario;
    }
} 
catch(exception $e)
{
    // Se houver algum erro, exibimos a mensagem
    echo $e->getMessage();
}

Nesse caso, verificamos se existe uma “relação” entre o usuário logado e o outro usuário, através do método existsFriendShip(). Se não existir, nós passamos a seguir esse outro usuário com o método createFriendship(). Caso essa relação exista, nós passamos a não seguir mais o outro usuário, através do método deleteFriendShip().

4. Quarto e último exemplo

Por fim, vamos a um exemplo completo e mais prático:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" xml:lang="pt-br" />
<title>Classe PHP para acessar API do twitter</title>
</head>
 
<body>
 
<?php
// Incluindo a classe
include('twitter.php');
 
// Informações de login
$usuario = 'usuario';
$senha = 'senha';
 
// Fazendo conexão com o twitter
$twitter = new Twitter($usuario, $senha);
 
// Função para criar links em um tweet
function createLinks($text)
{
    $text = preg_replace("#(^|[\n ])@([^ \"\t\n\r<]*)#ise", "'\\1<a href=\"http://www.twitter.com/\\2\" >@\\2</a>'", $text); 
    $text = preg_replace("#(^|[\n ])([\w]+?://[\w]+[^ \"\n\r\t<]*)#ise", "'\\1<a href=\"\\2\" >\\2</a>'", $text);
    $text = preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r<]*)#ise", "'\\1<a href=\"http://\\2\" >\\2</a>'", $text);
    return $text;
}
 
try
{
    // Recuperando últimas 5 atualizações
    $tweets = $twitter->getFriendsTimeline(null, null, 5);
 
    // Passando por cada tweet
    foreach ($tweets as $tweet)
    {
        // Exibindo usuário do tweet
        echo "<strong><a href='http://www.twitter.com/{$tweet['user']['screen_name']}' target='_blank'>{$tweet['user']['screen_name']}</a></strong>: ";
        // Exibindo tweet
        echo createLinks(utf8_encode($tweet['text'])) . '<br />';
    }
 
} 
catch(exception $e)
{
    echo $e->getMessage();
}
 
// Finalizando sessão
$twitter->endSession();
?>
 
</body>
</html>

Nesse exemplo, nós buscamos as últimas 5 atualizações de nossos amigos com o método getFriendsTimeline(). Esse método nos retorna um array com os tweets, portanto percorremos esse array e então exibimos o usuário responsável pelo tweet e a mensagem. A mensagem vem sem formatação, por isso utilizamos a função createLinks() que cria os links na mensagem. Por fim, nós precisamos finalizar a conexão com o twitter, para isso utilizamos o método endSession().

5. Finalizando

Com essa classe fica muito simples utilizar a API do twitter. Utilizei apenas alguns métodos da classe, porém há várias outras funcionalidades, como: recuperar favoritos, bloquear usuário, enviar mensagem direta, alterar foto e background, entre outras.

Download dos exemplos

Espero que a dica seja útil para vocês.
Até a próxima, abraços.

Compartilhar

Posts relacionados

  1. Vale lembrar que este método de utilização da API do Twitter não irá mais existir a partir do mês que vem. Ou seja, quem estive utilizando esse script vai ter problemas quando chegar essa data.

    Após isso, só irá funcionar a utilização via OAuth. Quem quiser ler mais, é só acessar: http://apiwiki.twitter.com/

  2. Marcio disse:

    Oi Rafael, 5 estrelas seu post. Pena que o que o André disse é muito válida.
    Já conseguiu usar a nova classe ?

    Abraço,
    Márcio

  3. Guto disse:

    como mandar uma mensagem pro twitter de outro usuário?

    • Rafael disse:

      Olá Guto,
      Você diz mensagem direta? Se for, exemplo:

      try
      {
          // Definindo o outro usuário
          $outroUsuario = 'faael';
          // Enviando mensagem direta
          $twitter->sendDirectMessage($outroUsuario, 'Mensagem direta, direto da API.');
          echo 'Mensagem direta enviada com sucesso';
      } 
      catch(exception $e)
      {
          // Se houver algum erro, exibimos a mensagem
          echo $e->getMessage();
      }

      Abraço.

  4. Vinícius Souza disse:

    Olá Fael, valeu por mais essa!
    Você sabe se existe uma classe como essa, só que pra live messenger? troca de menssagens, alteração de status, etc…

  1. Não há trackbacks para este post no momento.

Deixe um comentário