Cá estamos nós novamente para mais um artigo sobre Twitter. Sei que disse que só seriam 3 partes, que ia finalizar com a autenticação na API, mas surgiram muitas dúvidas referente a como usar outros comandos da API, como Direct Messages, Excluir tweets e Retweets.
Este artigo vai ser bem simples e direto ao ponto. Juntei todas as ações que mais foram pedidas nos comentários e adicionei algumas que julguei que podem se tornar dúvidas mais adiante. Vamos partir do pré-suposto que você já leu o artigo anterior (right?!) e já sabe tudo sobre como se autenticar na API do Twitter. So, let’s code!
Recuperando informações do Usuário
Nada melhor para começar do que saber para quem se está enviando um tweet (a não ver que você seja um spammer, você já deve saber), afinal, informação nunca é demais. Vamos então recuperar os dados do usuário:
require_once('twitteroauth/twitteroauth.php');
$consumer_key = '******';
$consumer_secret = '******';
$oauth_token = '******';
$oauth_token_secret = '******';
$connection = new TwitterOAuth(
$consumer_key,
$consumer_secret,
$oauth_token,
$oauth_token_secret
);
$result = $connection->get(
'users/show',
array(
'screen_name' => 'kidh0'
)
);
$id = $result->id
Isso vai me retornar o profile do usuário @kidh0 (eu mesmo, fique a vontade para me seguir @kidh0) com todas as informações referentes ao mesmo. Para acessar as informações, simplesmente use o $result como uma classe com atributos:
//codigo necessario para autenticacao na API (vide parte 3 do artigo) $id = $result->id; $nome = $result->name; $avatar = $result->profile_image_url;
Aqui cabe uma observação: Sempre que você for recuperar uma informação (tweets, profile, direct messages), você deve usar o método ‘get’ da classe TwitterOAuth. Já quando se for enviar alguma coisa (um update, uma direct), deve se usar o ‘post’. “Mas porque isso?” vocês devem estar se perguntando. Isso é porque o Twitter tem uma API REST, e precisa que seja explicito o verbo HTTP para que a requisição seja feita sem problemas.
Enviando/Removendo Direct Messages
Agora que já temos as informações do usuário, vamos começar a comunicação com ele. Primeiramente, vamos nos manter no anonimato e mandar Direct Messages.
Para enviar uma DM, você vai precisar necessariamente de 2 coisas: ou nome do usuário para quem você vai enviar a DM (tipo @kidh0) ou o ID do usuário, e a mensagem propriamente dita. Para facilitar, vou usar somente o usuário:
$result = $connection->post(
'direct_messages/new',
array(
'screen_name' => 'kidh0',
text' => 'O que vamos fazer essa noite Cérebro?'
)
);
Dentro da variável $result, estará toda a informação referente a DM enviada, para acessar as informações, siga o mesmo padrão que usamos antes.
Lembrando que para enviar uma DM, o usuário deve obrigatoriamente seguir você.
Para remover, é mais simples que enviar. Vamos recuperar a última DM e deletá-la:
//recupera as 20 ultimas DM
$result = $connection->get(
'direct_messages/sent',
array(
)
);
//pegamos a ultima enviada
$id = $result[0]->id;
$dm = $connection->post(
'direct_messages/destroy/' . $id,
array(
)
);
Voilá, DM deletada!
Enviando um Retweet
Nossa, eu ia “aportuguesar” a palavra, mas doeu aos olhos. Bom, para retweetar um tweet é bem simples, você só vai precisar… rufem os tambores… do ID do tweet :D.
Digamos que você queira retweetar o meu tweet “code is mighter than the sword #devlife”. Bom, o ID deste tweet é 25681189229, para descobrir o ID, você deve usar recurso “statuses/user_timeline”, explicado no artigo anterior. Tendo em mãos o ID:
$id = 25681189229;
$result = $connection->post(
'statuses/retweet/' . $id,
array(
)
);
Deletando um tweet
Quantas vezes você já tweetou algo errado, ou chegou em casa de cabeça quente e usou o famoso #prontofalei e depois se arrependeu? Para remover um tweet, assim como para retweetá-lo (garanto que já deve ter no aurélio essa palavra), você precisa só do ID do tweet:
$id = 13823697837;
$result = $connection->post(
'statuses/destroy/' . $id,
array(
)
);
Pronto, sem mais dores de cabeça referentes a um tweet embriagado. A não ser que quem não devesse ler, foi mais rápido que você.
Concluindo
Existem ainda dezenas de outros recursos a serem utilizados na API do Twitter, listei aqui alguns dos mais pedidos. Conforme necessidade, vou acrescentando outros aqui, mas por enquanto, ficarão somente estes. Por hoje é só pessoal, drive safely!
Alguns links interessantes:
Leia também:
- PHP: Integrando o Facebook ao seu site – parte 2 – Atualizando o status do usuário
- PHP: Integrando o Facebook ao seu site – parte 1 – Acessando o perfil público
- PHP: Integrando o Twitter ao seu Site – Autenticação de Usuários
- PHP: Integrando o Twitter ao seu Site – Parte 3 (Agora com OAuth)
- PHP: Integrando o Twitter ao seu Site – Parte 2
Boa, Henrique. Sabe se há alguma classe para trabalhar com a API do facebook? Se sim, como usá-la para recuperar atualizações de um usuário, postar atualizações, autenticação do usuário?
Valeu!
Italo, com certeza deve existir várias clases pra trabalhar com a API do Facebook, mas realmente ainda não usei nenhuma. Quando surgir uma oportunidade, farei um post explicando como usar.
Beleza, Henrique. Aguardo ansiosamente pelo post :D
Aê Henrique, estava usando a API normal e agora começou a dar o seguinte erro: Invalid / used nonce
Pesquisei na web, mas não achei a solução pra isso. Sabe o que pode ser? Alguma mudança da API? Como resolver?
Não teve nenhuma alteração na API que viesse a gerar tal erro. Talvez uma momentanea indisponibilidade?
Pode ser. Vi alguma pessoas no twiter falando que a API tava bichada, vamos esperar pra ver. Espeque se se corrija logo.
Bom dia Henrique!Tive o prazer de conhecer seu site a pouco tempo, mas confesso estar maravilhado com tantas dicas excelentes.
Queria deixar uma sugestão de post, uma vez que nunca encontrei nenhum artigo que ensinasse a como criar um aplicativo para o Twitter. Assim, fica a dica. Poderia ser feito em duas partes. Uma ensinando a criar o aplicativo e outra a autorizar via oauth.
Abração e sucesso!
Opa Marcelo! Dica anotada!
o $consumer_key, $consumer_secrt eu consegui…
Agora onde consigo o $oauth_token e $oauth_token_secret
Esses dados tu consegue dentro da aplicação que tu criaste. Clique na aplicação, depois em My Acess Token. Isso está muito bem descrito no post.
Henrique veio acompanhando seus post para enviar tuites, eu cadastrei a aplicação e peguei os tokens só que não consigo utilizar, não aparece nenhum erro pra mim, mas também não envio os tuites, eu queria que fosse possivel, requisitar o usuario e senha para envia o tuite atraves de outras contas dos usuarios ou só será enviado tuites para a minha conta que cadastrei a aplicação, é possivel fazer isso, usando essa classe que vc usa nos seus exemplos? Estou executando local em testes ainda, sabe se pode ser isso?
Henrique, tem previsão de quando fará um post em relação àquela pergunta que fiz no post anterior: “Como criar um aplicativo que permita posts no twitter de quem se cadastrar no app.”
Você disse q seria o seu próximo post, hehehehe… vim aqui todo ansioso. =P
Marcelo, creio que em uma semana, possivelmente, eu esteja liberando este post. Fique no aguardo!
Eu só não sei se eu expliquei direito.
Assim, eu tenho uma App, e quero que os usuários cadastrados nela a utilizem para postar no Twitter. Como se fosse um “echofon”, porém web.
Eu consegui fazer isso pra 1 usuário só, dono da App. E depois eu consegui fazer a App postar enquanto houver sessão, porém logo quando a sessão é encerrada não posta mais, mesmo eu armazenando o token.
Eu achei que estava entendendo isso, mas agora já me confudi todo.
Na verdade, o problema é que tu está armazenando o token só do teu usuário. Se tua aplicação for usar o token de outra pessoa, tu vai precisar que o usuário permita que tua aplicação use o token dele. Isso vai ser bem detalhado no próximo post sobre a api do twitter.
Anderson, os posts que fiz até agora, só mostram como tu envia tweets através de uma aplicação com um usuário conhecido (no caso, tu mesmo). O próximo post vai ser justamente sobre como usar a API do Twitter para qualquer usuário, desde que ele permita o uso, logicamente :)
Como eu faço para listar hastag do twitter?
Agradeço desde já!
Como assim listar hashtags? Se tu quis dizer o trend topics http://dev.twitter.com/doc/get/trends. Se tu estiver te referindo a procurar por um termo especifico: http://dev.twitter.com/doc/get/search
Excelente tutorial. Uma grande utilidade nos tempos de hoje.
Para ficar completo, só faltou exemplo de como exibir os mentions e a home_timeline.
Abraço!
É bem simples Diego, usando a mesma regra utilizada no artigo, veja esses dois links:
http://dev.twitter.com/doc/get/statuses/home_timeline e http://dev.twitter.com/doc/get/statuses/mentions
Cara como eu consigo alterar para que ele pegue a home_timeline ao invés de user_timeline?
Abraço excelente post esta me ajudando muito.
Hum, mudando para statuses/home_timeline ? Dá uma lida na documentação do twitter que tá bem claro lá ;)
Consegui exibir tudo o que eu queria: user_timeline, home_timeline, dms e mentions.. perfeito. Só que coloquei o link da mensagem para visualizar no twitter e.. tá dando problema no id.
O id está vindo assim: 3.8958131216269E+16
Quando o original (o que deveria vim) é assim: 38958131216269312
Alguém sabe como resolver isso? Tem que converter algo?
cara… sabe como eu faço para listar todos os meus followings?
http://dev.twitter.com/doc/get/statuses/followers – Na api do Twitter tem todos os recursos acessiveis ;)
Cara… aprendi muito com esses tutoriais do oAuth… já desenvolvi varios sisteminhas e tudo mais… muito boa tuas explicações… só que não estou conseguindo uma coisa. Será que é possível você demonstrar como listar todos os followers e followings de determinado usuario com a autenticação? A autenticação eu consegui fazer beleza… mas não consegui listar os friends… :// Procurei muito na internet e nada.. muito pouca documentação… fico no aguardo!
Marcos, basicamente, é só usar o comando da api, depois de logado, e percorrer o resultado. Qual especificamente é teu problema?
Me ajudou muito o artigo, bem explicado e fácil de entender, consegui a solução para o site de um cliente.
Valeu Henrique
Era exatamente isso que vinha procurando a algum tempo.
Valeu e acho que esse foi o único que realmente trouxe alguma luz a esse assunto.
Agora minha dúvida: Eu consigo postar do site para o twitter, porém não é todas as vezes que isso acontece, como se eu pudesse publicar outro somente apos determinado tempo.
Existe algo neste sentido na API?
Obrigado pelo POST
A API do Twitter tem limites de uso por usuário, não sei se atualmente estão fazendo como a API do facebook que não permite posts duplicados. Se vocês estiver fazendo disparos em massa, pode ser possivel que tu esteja atingindo um limite da API