Fala pessoal, tudo certo? Dando continuidade a esta série de artigos, hoje vamos ver como buscar e exibir as informações do twitter.
Para quem ainda não viu, recomendo a leitura da primeira parte:
Acessando API do twitter via OAuth com PHP | Parte 1
Para buscar as informações no twitter, basta utilizar o método get() de nossa classe. O primeiro parâmetro é o recurso que será utilizado. Para saber os recursos da API do twitter é só acessar a documentação da API.
Confira a aplicação em funcionamento
1. Informações do usuário autenticado
Para descobrir as informações do usuário autenticado, podemos utilizar o recurso account/verify_credentials.
1 2 3 4 | <?php // @link http://dev.twitter.com/doc/get/account/verify_credentials $usuario = $connection->get('account/verify_credentials'); ?> |
As informações retornadas pela API são alocadas no objeto $usuario, desse modo podemos exibir todas propriedades do objeto e seus respectivos valores através da função print_r().
1 2 3 | <?php echo '<pre>', print_r($usuario, true), '</pre>' ?> |
No caso se eu estiver autenticado com meu twitter (@faael), o código acima irá retornar:
stdClass Object
(
[verified] =>
[id_str] => 30599789
[notifications] =>
[profile_text_color] => 333333
[url] => http://faael.net
[description] => Aficionado por tecnologia, principalmente em relação a web.
[default_profile] => 1
[profile_sidebar_fill_color] => DDEEF6
[default_profile_image] =>
[following] =>
[profile_background_tile] =>
[profile_image_url] => http://a0.twimg.com/profile_images/887089721/IMG0023A_normal.jpg
[location] => Brasil - Bauru, SP
[contributors_enabled] =>
[time_zone] => Brasilia
[profile_link_color] => 0084B4
[screen_name] => faael
[follow_request_sent] =>
[profile_sidebar_border_color] => C0DEED
[followers_count] => 121
[show_all_inline_media] =>
[geo_enabled] =>
[favourites_count] => 48
[created_at] => Sun Apr 12 04:20:49 +0000 2009
[protected] =>
[profile_use_background_image] => 1
[name] => Rafael Couto
[is_translator] =>
[lang] => en
[friends_count] => 219
[profile_background_color] => C0DEED
[id] => 30599789
[listed_count] => 22
[statuses_count] => 115
[profile_background_image_url] => http://a3.twimg.com/a/1302724321/images/themes/theme1/bg.png
[utc_offset] => -10800
)O resultado acima é apenas pra nós sabermos os nomes das propriedades, pois assim podemos exibir apenas as que interessam para nossa aplicação.
1 2 3 4 5 6 7 8 9 10 11 | <img src='<?php echo $usuario->profile_image_url ?>' /> <h3><?php echo $usuario->name ?></h3> <big><strong><?php echo '@' . $usuario->screen_name ?></strong></big> <span class="location"><?php echo $usuario->location ?></span> <p> <em><?php echo $usuario->description ?></em> <br /> <a href='<?php echo $usuario->url ?>'><?php echo $usuario->url ?></a> </p> |
2. Atualizações dos amigos
Para recuperar as atualizações dos amigos do usuário autenticado, podemos utilizar o recurso statuses/home_timeline ou statuses/friends_timeline, a diferença é que o último não mostra os retweets.
1 2 3 4 | <?php // @link http://dev.twitter.com/doc/get/statuses/home_timeline $timeline = $connection->get('statuses/home_timeline', array('count' => 5)); ?> |
O método get() aceita como segundo parâmetro um vetor com os parâmetros do recurso. Por exemplo, podemos limitar a quantidade de registros que serão retornados passando o parâmetro count. Para saber os parâmetros de um recurso, basta ver na documentação da API.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?php foreach ($timeline as $tweet): ?> <div class="tweet"> <img src='<?php echo $tweet->user->profile_image_url ?>' /> <span class="usuario"> <big><a href="http://twitter.com/<?php echo $tweet->user->screen_name ?>/"><?php echo $tweet->user->screen_name ?></a></big> <?php echo $tweet->user->name ?> </span> <br /> <span class="texto"> <?php echo $tweet->text ?> </span> <br /> <span class="data"> <?php echo date('d/m/Y H:i:s', strtotime($tweet->created_at)) ?> </span> </div> <?php endforeach ?> |
Alguns detalhes:
- Linha 1: Como um usuário pode ter mais de uma atualização de amigos, percorremos a $timeline utilizando o laço foreach(). Portanto, tudo que está dentro do foreach será exibido para cada atualização;
- Linha 5: acessamos a propriedade profile_image_url do objeto user (usuário que enviou o tweet), que nos retorna o caminho da imagem de exibição do usuário, este endereço é colocado no atributo src da tag img;
- Linha 8: exibimos o apelido do usuário, linkando para seu profile no twitter;
- Linha 21: transformamos a data retornada em string para time através da função strtotime() e depois formatamos ela com a função date().
3. Amigos / Seguidores
Para recuperar os amigos e os seguidores do usuário autenticado utilizamos, respectivamente, os recursos statuses/friends e statuses/followers.
É o mesmo esquema, utilizamos o método get() que nos retorna as informações de um recurso e então exibimos essas informações, como esses recursos retornam mais de um registro, precisamos utilizar o laço foreach().
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php // @link http://dev.twitter.com/doc/get/statuses/friends $friends = $connection->get('statuses/friends', array('count' => 20)); ?> <p><em>Exibindo 20 amigos de <?php echo $usuario->friends_count ?>.</em> </p> <?php foreach ($friends as $friend): ?> <a href="http://twitter.com/<?php echo $friend->screen_name ?>"> <img src='<?php echo $friend->profile_image_url ?>' /> </a> <?php endforeach ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php // @link http://dev.twitter.com/doc/get/statuses/followers $followers = $connection->get('statuses/followers', array('count' => 20)); ?> <p><em>Exibindo 20 seguidores de <?php echo $usuario->followers_count ?>.</em></p> <?php foreach ($followers as $follower): ?> <a href="http://twitter.com/<?php echo $follower->screen_name ?>"> <img src='<?php echo $follower->profile_image_url ?>' /> </a> <?php endforeach ?> |
4. Trends
Podemos recuperar também os trends topics, basta utilizarmos o recurso trends/:woeid. O :woeid é um parâmetro numérico que indica a localização dos trends (leias mais aqui), se informado 1, o retorno será os trends mundiais. O woeid do Brasil é o 23424768.
1 2 3 4 5 6 7 8 9 | <?php // @link http://dev.twitter.com/doc/get/trends/:woeid $trends = $connection->get('trends/23424768'); ?> <ul> <?php foreach ($trends[0]->trends as $trend): ?> <li><a href="http://twitter.com/search/<?php echo $trend->query ?>"><?php echo $trend->name ?></a></li> <?php endforeach ?> </ul> |
5. Atualizações de um usuário especifico
Para exibir as atualizações de um usuário especifico utilizamos o recurso statuses/user_timeline. Passamos como parâmetro o id ou screen_name do usuário.
1 2 3 | <?php // @link http://dev.twitter.com/doc/get/statuses/user_timeline $timeline = $connection->get('statuses/user_timeline', array('screen_name' => 'faael')); ?> |
6. Concluindo
Bom pessoal, infelizmente não é possível eu detalhar todos os recursos, até porque a documentação da API já faz isso, mas tentei pelo menos passar o conceito para acessar um recurso, com isso podemos acessar qualquer recurso disponível na API, basta apenas descobrir o nome do recurso e seus parâmetros na documentação da API.
Qualquer dúvida sobre um recurso que foi ou não abordado aqui, deixe um comentário. Estou aprendendo agora também utilizar a API do twitter, então qualquer sugestão, correção ou melhoria é bem vinda, ok?
Na próxima etapa iremos alterar informações do usuário autenticado. Até breve.
Abraços.
Muito bom seus posts.
Eu estou fazendo meu TCC em PHP e suas dicas me ajudam muito.
Ontem mesmo, eu estava tirando um game, dai um amigo da faculdade veio tirar duvidas.
Aee eu falei..Vai lá no rafaelcouto.com.br que ele te ensina.
abrss
Bom dia, muito bom estes dois artigos.
Eu estou querendo desenvolver um sistema que poste no Twitter em um determinado horário o que o usuário cadastrar.
Para isto eu tenho que armazenar alguma informação deste usuário, pois a sessão naquele momento já não mais existirá. Você sabe me dizer o que preciso armazenar?
Olá Emerson,
Bom, pelo pouco que conheço sobre o OAuth, não sei se seria possível fazer isso, pois o usuário precisa se autenticar lá na página do twitter para assim conseguir o token de acesso, porém após um período esse token de acesso expira, então não adiantaria armazená-lo e reutilizá-lo.
Se eu descobrir alguma maneira eu lhe falo, e caso você descubra compartilhe com a gente, ok?
Abraço.
Existem diversas aplicações as quais autorizamos ter acesso ao nosso twitter mesmo estando offline.
O twitterfeed por exemplo. ele posta noticias do meu feed automaticamente no meu twitter.
como eu faço para conseguir registrar essa minha aplicação no twitter de um cliente para eu acessas o twitter dele a qualqer hora? Pq vc mesmo disse que depois de um tempo o token expira.
Olá Rafael,
Passei por todos os passos, já revisei tudo, mas mesmo assim tá dando a mensagem de Não foi possível conectar-se.. Pode me dar uma dica de como encontrar esse erro?
Obrigado e o post tá show de bola!!!
Diogo
ola rafael, muito bom o post, só queria saber se existe a possibilidade de enviar tweets neste painel….
atenciosamente
preciso exibir todos os amigos que eu sigo, mas o maximo que ele exibe é 100.
como eu crio uma paginaçao para isso? exibir os outros?
Valeu. Esse tutorial veio bem na hora certa.
Tive a idéia de uma aplicação pra twitter.
Agora é só por a mão na massa.
Muito obrigado.
Fiz um sistema de Automação Residencial com Twitter usando o seu tutorial. Eu envio um tweet do tipo #acenderlampadadasala e a luz da minha sala acende!
Show de bola seu tutorial. Soh faltou a parte de enviar tweet, mas eu olhei no site da API do Twitter e consegui fazer.
Abraço, André.
Olá André,
Muito interessante essa ideia, parabéns.
Abraço.
Rafael gostaria de saber como postar no twitter atravez da API pois nos exemplos acima não foi citado, se puder ajudar muito obrigado, e parabéns pelo ótimo tutorial.
consegui fazer twittar segue o cod
$timeline = $connection->post(‘statuses/update’, array(‘status’ => “TEXTO”));
gostaria de saber se é possivel uma api que twitt em varios twitters ao mesmo tempo, pois possuo varios, e queria rodar a aplicação apenas uma vezes e não ficar tendo que fazer login toda hora com twitters diferentes, obg.
O comando $usuario = $connection->get(‘account/verify_credentials’); não está funcionando. A conexão com a API não está dando erro, o que pode ser ?