PHP: Integrando o Twitter ao seu site – Parte 1

Saudações a todos, ao contrário do que parece, o blog não morreu ou foi esquecido, apenas as velhas desculpas de sempre (problemas, trabalho, faculdade… mimimi). Mas não vou perder tempo explicando por menores, lógico!
Iniciaremos hoje uma série de 3 artigos sobre como integrar o twitter ao seu site. Os artigos vão ser divididos da seguinte maneira:
- Mostrar seus tweets (updates) no seu site de maneira simples;
- Atualizar sua timeline (a.k.a “twittar”) diretamente do seu site;
- Implementar uma biblioteca para simplificar o uso em seus projetos;
Ok ok, já existem várias bibliotecas para isso, mas a intenção aqui é ir desde a tarefa mais simples (listar os tweets) até as mais complexas, como projetar um biblioteca orientada a objetos. Sempre é bom treinar OO, então vamos usar isto aqui.
Parte 1 : Mostrando seus tweets
Nada melhor para iniciar do que algo simples, mas não um mero Hello World, um simples útil, legal, que vai trazer o efeito UAU ao sei site. Ok, exagerei, menos enrolação e mais ação.
O processo para mostrar seus tweets envolve basicamente 2 coisas, o RSS da sua timeline e a biblioteca SimpleXML que já vem integrada ao PHP (pelo menos nas versões mais recentes).
Usando o RSS da sua timeline
Apesar de existirem várias maneiras de ter acesso a seus updates, a mais fácil delas é usando o RSS disponível na sua home. É possível fazer isso via a API do twitter, mas vamos deixar isso para mais adiante, afinal, a parte 1 tem que ser fácil.
Para evitar de você sair do artigo agora, acessar a home do twitter e ainda correr o risco de dar de cara com a Fail Whale, vou simplificar as coisas:
http://twitter.com/statuses/user_timeline/kidh0.rss
onde logicamente, você irá substituir o “kidh0″ pelo seu usuário do twitter.
Com isso, irá listar listar seus últimos 15 twits (pelo que pude contar). Claro, muitas vezes temos um espaço muito pequeno para mostrar os updates, por isso, vamos limitar esse número usando o parametro “count” na URL do RSS:
http://twitter.com/statuses/user_timeline/kidh0.rss?count=5
Pronto, agora irá retornar somente os 5 últimos updates.
Brincando com XML usando o SimpleXML
SimpleXML é uma biblioteca do PHP que permite fazer a manipulação de XML, tanto de strings quanto de arquivos, fazendo o parse para um objeto.
O uso básico dela, que no caso é o mesmo que nós iremos fazer, é o seguinte:
$url = 'http://twitter.com/statuses/user_timeline/kidh0.rss?count=5'; $xml = simplexml_load_file($url);
Pronto, com isto já temos um objecto preenchido com os 5 post que requisitamos. Fácil não?
Juntando tudo e fazendo a mágica acontecer
Agora vem a parte mais legal da história, juntar tudo e mostrar o resultado.
Não tem como ser mais descritivo do que mostrando o próprio código:
$url = 'http://twitter.com/statuses/user_timeline/kidh0.rss?count=5';
$xml = simplexml_load_file($url);
echo '<ol>';
foreach($xml->channel->item as $node){
printf('<li><a href="%s">%s</a></li>',
$node->link,
$node->title
);
}
echo '</ol>';
Explicando:
- Linha 1: simples atribuição da URL do RSS do twitter, para simplificar;
- Linha 2: Fazemos o parse da URL em questão para um objeto usando o método simplexml_load_file()
- Linha 3: Percorremos o objeto SimpleXML para pegar os dados para mostrar, neste caso usamos só title e o link para o update, mas existem outras opções como pubDate.
Com isso, está pronto o script para integrar os updates do twitter ao seu site, simples não?
Aguarde as próximas partes, elas virão…
Leia também:



5 de abril de 2010 at 19:26
Parabéns!
Bem simples e fácil de entender.
Vamos ver as outras partes.
Abraço!
6 de maio de 2010 at 11:44
Baaa, valeu cara
muito bom, bem simples e fácil.
Obrigado mesmo
11 de maio de 2010 at 23:22
[...] como no outro artigo, a explicação é maior do que o código propriamente dito. Com esses dados a mão, o que temos [...]
7 de julho de 2010 at 02:06
Boa funciono certinho cara!
Mas tenho uma pequena duvida, meus tweets eu os defini como privados, não tem como dentro desse PHP eu acrescentar meu user e senha do twitter para que os mesmo sejam exibidos em meu site?
7 de julho de 2010 at 08:03
William, respondendo tua pergunta, a terceira parte do artigo, que tudo correndo bem, vou colocar no ar até segunda feira, vai ser exatamente isso, fazer login na API do twitter via oAuth, permitindo acessar tudo da tua conta, inclusive as mensagens privadas.
Conforme falei nos outros 2 posts, ia fazer uma classe de acesso ao Twitter, mas mudei o foco da 3ª parte justamente porque agora em julho, o twitter vai desabilitar o login básico http e só permitir o oAuth, com isso, muitas aplicações vão parar de funcionar.
7 de julho de 2010 at 15:18
Opa! Valeu irei acompanhar o blog aguardando pela 3ª parte então!
28 de julho de 2010 at 12:38
Alguém sabe como configurar a acentuação neste código?
28 de julho de 2010 at 13:16
Thiago, creio que o teu problema seja no encoding da tua página que está listando os tweets. XML é UTF-8, se o encoding do teu script/página estiver em ISO-8859-1, vai gerar encoding errado. Recomendo tu usar a função utf8-decode para ti mostrar os dados sem o problema do enconding.
28 de julho de 2010 at 13:45
Isso aê, erro bobo meu. Valeu a atenção.
Tb tô no aguardo do próximo artigo para aprender mais!
28 de julho de 2010 at 15:40
Tem alguma chance de eu conseguir usar “friends_timeline” ao invés de “user_timeline” seguindo esses passos que você descreveu?
28 de julho de 2010 at 15:52
Douglas, é possível sim, mas para ti ter acesso a timeline das pessoas que o usuário segue, ou seja, ver os tweets que o usuário ve, tu precisa estar autenticado na API do Twitter, que vai ser abordado no próximo artigo (e último).
20 de agosto de 2010 at 16:32
Nesse exemplo tem outro errinho bobo, para a lista ser preenchida corretamente, basta tirar o echo ”; de dentro do foreach…
abraço!
20 de agosto de 2010 at 16:37
e quem quiser arrumar o problema de codificação ( caracteres errados no retorno dos twits ), basta inserir esta linha, logo no topo do script php:
<?php
header('Content-Type: text/html; charset=utf-8');
…
que resorve, abrazios pessoal
23 de agosto de 2010 at 00:04
Esses tutoriais eram tudo o que estava precisando!!
Parabéns, muito bem explicado.
Só tive um probleminha com seu código, mas era só uma besteirinha é que a auto numeração não está funcionando, só tirei a linha: echo ”; e echo ”; para fora do foreach, funcionou direitinho, valeu cara!!
23 de agosto de 2010 at 13:45
Muito obrigado pela correção Fernando, erro bobo, mas ainda sim um erro, já corrigi o script para ficar correto.
23 de agosto de 2010 at 13:45
Muito obrigado pela correção GuiRik, erro bobo, mas ainda sim um erro, já corrigi o script para ficar correto.
1 de setembro de 2010 at 09:23
[...] que já está tudo certo e você está autorizado na API, vamos brincar mais um pouco. No primeiro artigo da série, mostrei como recuperar de maneiras mais simples (RSS, basicamente) os tweets do [...]
3 de setembro de 2010 at 10:17
Eu não estou conseguindo publicar mensagens com acentos via Oauth alguem tem alguma sugestão? já tentei charset, htmlentities(envia mas consome caracteres)enfim…
3 de setembro de 2010 at 10:28
Tiga, tentou usar utf_encode para converter os caracteres para UTF-8? Muito provavelmente a API do Twitter espera receber caracteres UTF-8, por isso, os caracteres não estão sendo “aceitos”.
3 de setembro de 2010 at 10:34
Usei (utf8_encode) tb e nada cara, ta embassado! vc nao tem algum ex, ai ?
3 de setembro de 2010 at 10:41
Procurando no Twitter Developers, achei o seguinte post. Deve ser usado utf8_decode para fazer a conversão.
3 de setembro de 2010 at 10:52
Legal o exemplo mas quando coloco o encode ele da erro, estranho isso!
3 de setembro de 2010 at 11:12
Então.. resolvi assim:
$st = $twitterObj->post_statusesUpdate(array(‘status’ => utf8_decode($status)));
onde $status = “demonstração” pode se usar o htmlentities para codificar
obrigado pela dica
[]‘s
Tiga
3 de setembro de 2010 at 11:56
So lembrando que o exemplo acima consome caracteres, mas vou continuar procurando este Oauth ta dando o que falar