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.
Espero que a dica seja útil para vocês.
Até a próxima, abraços.
Compartilhar




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/
Olá André,
Obrigado pela informação. Vou ver se adapto até lá, já que a nova classe está sendo desenvolvida
Abraço.
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
Olá Marcio,
Ainda não tentei utilizá-la. Porém, quando eu tiver um tempo livre vou estudá-la e fazer um novo artigo, ok?
Obrigado, abraço.
como mandar uma mensagem pro twitter de outro usuário?
Olá Guto,
Você diz mensagem direta? Se for, exemplo:
Abraço.
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…
Olá Vinícius Souza,
Infelizmente não conheço nenhuma. É uma boa coisa para se pesquisar, se eu descobrir eu compartilho aqui no blog.
Abraço.