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:

  1. Mostrar seus tweets (updates) no seu site de maneira simples;
  2. Atualizar sua timeline (a.k.a “twittar”) diretamente do seu site;
  3. 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…

Compartilhe e use:
  • del.icio.us
  • Digg
  • Twitter
  • StumbleUpon
  • Technorati
  • Reddit
  • Rec6
  • Identi.ca


Leia também:

  1. PHP: Integrando o Twitter ao seu Site – Parte 3 (Agora com OAuth)
  2. PHP: Integrando o Twitter ao seu Site – Parte 2


24 comentários para “PHP: Integrando o Twitter ao seu site – Parte 1”

  • Charles Says:

    Parabéns!
    Bem simples e fácil de entender.
    Vamos ver as outras partes.
    Abraço!

  • Arthur Lehdermann Says:

    Baaa, valeu cara
    muito bom, bem simples e fácil.

    Obrigado mesmo

  • PHP: Integrando o Twitter ao seu Site – Parte 2 | bittersweet dev Says:

    [...] como no outro artigo, a explicação é maior do que o código propriamente dito. Com esses dados a mão, o que temos [...]

  • William Says:

    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?

  • kidh0 Says:

    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.

  • William Says:

    Opa! Valeu irei acompanhar o blog aguardando pela 3ª parte então! :D

  • Thiago Says:

    Alguém sabe como configurar a acentuação neste código?

  • kidh0 Says:

    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.

  • Thiago Says:

    Isso aê, erro bobo meu. Valeu a atenção.

    Tb tô no aguardo do próximo artigo para aprender mais!

  • Douglas Says:

    Tem alguma chance de eu conseguir usar “friends_timeline” ao invés de “user_timeline” seguindo esses passos que você descreveu?

  • kidh0 Says:

    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).

  • Fernando Says:

    Nesse exemplo tem outro errinho bobo, para a lista ser preenchida corretamente, basta tirar o echo ”; de dentro do foreach…

    abraço!

  • Fernando Says:

    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

  • GuiRik Says:

    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!!

  • kidh0 Says:

    Muito obrigado pela correção Fernando, erro bobo, mas ainda sim um erro, já corrigi o script para ficar correto.

  • kidh0 Says:

    Muito obrigado pela correção GuiRik, erro bobo, mas ainda sim um erro, já corrigi o script para ficar correto.

  • PHP: Integrando o Twitter ao seu Site – Parte 3 (Agora com OAuth) | bittersweet dev Says:

    [...] 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 [...]

  • Tiga Says:

    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…

  • kidh0 Says:

    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”.

  • Tiga Says:

    Usei (utf8_encode) tb e nada cara, ta embassado! vc nao tem algum ex, ai ?

  • kidh0 Says:

    Procurando no Twitter Developers, achei o seguinte post. Deve ser usado utf8_decode para fazer a conversão.

  • Tiga Says:

    Legal o exemplo mas quando coloco o encode ele da erro, estranho isso!

  • Tiga Says:

    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

  • Tiga Says:

    So lembrando que o exemplo acima consome caracteres, mas vou continuar procurando este Oauth ta dando o que falar

Deixe um comentário