O documento discute aplicativos sociais no Twitter, incluindo dados sobre o uso da rede social, a API do Twitter e como desenvolver aplicações que acessem a API. É apresentada uma biblioteca PHP chamada TwitterTools que facilita o acesso à API e exemplos de como usá-la para criar um aplicativo que responda perguntas no Twitter.
2. 1. Aplicativos Sociais
O que são aplicativos sociais?
Aplicativos integrados a sites de redes
sociais, que se beneficiam de uma
estrutura existente através do uso de api's
e containers
Podem ser de vários tipos, com diferentes
níveis de imersão, com diversas
finalidades, desde jogos até simples
”robôs”
Compartilhamento é a palavra chave
Integração de sites com redes sociais é
tendência
3. 2. Alguns dados do Twitter
Globalmente, é a segunda rede
social mais acessada
Na América Latina, é o quarto
maior, com crescimento de 59%
no último ano
No Brasil também é o quarto, com
12 milhões de visitantes.
Dados da ComScore, junho de 2011
5. 3. Twitter API
REST API
RW, ”direto do banco”, sem filtros
Search API
Read only, user quality filter + relevance and
ranking filter, armazenados em cache
Streaming API
Read only, user quality filter, streaming tempo real.
Estatísticas de uso da API do Twitter:
13 bilhões de reqs/dia, 150mil reqs/segundo
7. 3. Twitter API
Autenticação
OAuth – requisições assinadas
Acesso orientado por usuário
Tipos diferentes de acesso por aplicação
(permissões)
Aplicações não salvam senhas
Usuários podem mudar suas senhas e as
chaves (tokens) continuam válidas
8. 3. Twitter API
Limitações REST api
350 chamadas/hora por
usuário(chamadas autenticadas) ou
IP(não autenticadas)
”limites naturais” para total de follows,
unfollows, tweets e dm's por dia
Tweets duplicados não são aceitos
9. 4. Diferenças entre Aplicações
A nível de Permissão (definido no registro)
Somente Leitura (R)
Leitura e Escrita (RW)
Leitura, Escrita e DM's (RWD)
A nível de Projeto
Multi usuário, com ou sem persistência
Usuário único
A nível de Acesso
Autenticada
Não autenticada
10. 5. Registrando uma aplicação
Registro de Aplicação
Antes de começar, é preciso cadastrar
a aplicação em http://dev.twitter.com
No formulário você define os dados da
app e a sua url de callback
Após o cadastro, você terá duas
chaves: consumer_key e
consumer_key_secret
15. 6. Lib TwitterTools
Requisitos Básicos
Servidor web externo com:
− módulo Curl (libcurl)
− allow_url_fopen ON (php.ini)
consumer_key e consumer_secret
(obtidos no registro da app)
16. 6. Lib TwitterTools
Benefícios
Facilidade muito maior no processo de
autenticação
Métodos simples para as chamadas mais comuns
Retorno em array
Possibilidade de executar também chamadas
complexas e bem específicas
Encurtador de url e envio de imagens (twitpic)
Possibilidade de extender com novas
funcionalidades
17. 6. Lib TwitterTools
Checando estado
Propriedade ”state”
− 0 = não autenticado
− 1 = acabou de autorizar a app e retornar
− 2 = autenticado
Conf. Api keys de terceiros
TwitterTools::$bl_login
TwitterTools::$bl_apikey
TwitterTools::$twitpic_apikey
18. 6.1 Retornos da API
Principais retornos
Objeto Usuário
Objeto Tweet
Objeto Timeline
Mensagens de erro
19. 6.1 Retornos da API: objeto User
[profile_background_image_url] =>
http://a2.twimg.com/profile_background_images/185716312/bg_tw.jpg
[protected] => 0
[statuses_count] => 7411
[location] => João Pessoa PB
[name] => Erika Heidi Focke
[listed_count] => 58
[url] => http://erikaheidi.com
[following] => 1
[description] => Desenvolvedora Web, recém formada em publicidade. Demasiado
interesse pelo estudo de redes sociais e suas influências. Criadora do
TweetAuditor.in
[created_at] => Tue Jan 27 23:55:15 +0000 2009
[id_str] => 19625601
[favourites_count] => 22
[profile_image_url] =>
http://a3.twimg.com/profile_images/1441955889/DSCF4643__normal.JPG
[id] => 19625601
[time_zone] => Brasilia
[friends_count] => 528
[followers_count] => 1126
[screen_name] => erikaheidi
20. 6.1 Retornos da API: objeto Tweet
[user] => Array(objeto usuário)
[in_reply_to_status_id] =>
[in_reply_to_user_id] =>
[text] => Eu estou rindo muito com a confusão do @GreatZoltar!
[created_at] => Wed Jul 20 00:25:01 +0000 2011
[id_str] => 93476467735937024
[geo] =>
[favorited] =>
[id] => 93476467735937024
[in_reply_to_status_id_str] =>
[source] => TweetDeck
[coordinates] =>
[in_reply_to_screen_name] =>
[truncated] =>
[in_reply_to_user_id_str] =>
21. 6.2 Exemplos
Exemplo de código para obter 10 mentions
recentes do usuário (modo ”robô”)
$cskey = ”XYZ”;
$cssecret = ”ABC”;
$atoken = ”cde”;
$atoken_secret = ”fgh”;
$tw = new TwitterTools($cskey,$cssecret,$atoken,$atoken_secret);
$mentions = $tw->getMentions(10);
print_r($mentions);
Retorno: Array com elementos do tipo ”Tweet”(array), incuindo o objeto do
usuário(também em formato array). Exemplo: http://pastebin.com/TwSLPTUZ
22. 6.2 Exemplos
Com autenticação do usuário
session_name("MyAPP");
session_start();
$cskey = ”XYZ”;
$cssecret = ”ABC”;
$tw = new TwitterTools($cskey,$cssecret);
if(!$tw->state)
{
//exibir botão p/ logar
$request_link = $tw->getAuthLink();
echo '<p><a href="'.$request_link.'" title="sign in with
your twitter account"><img src="img/sign-in-with-twitter-
d.png" /></a></p>';
}
else
{
$mentions = $tw->getMentions(10);
print_r($mentions);
}
25. 6.3 Métodos
Public
getTrending()
search(query)
Chamada Genérica
makeRequest(api_url[,$args=null,$method='GET'])
26. 7. Exemplo: Oráculo de Zoltar
Aplicativo ”robô” que
responde perguntas de forma
randômica
Roda através do cron, a cada
5 min
Verifica novas mentions e se
é uma pergunta (procura '?')
http://twitter.com/GreatZoltar
Responde e salva o ID da
Faça sua pergunta agora! última mention verificada
@GreatZoltar
27. /* inclui as libs e instancia o objeto twittertools */
/* cria um array com várias respostas */
/* obtém o ID da última mention verificada e faz uma chamada
específica para obter as mentions a partir daquele ID */
if($result) {
foreach($result as $tweet) {
if(!$lastid)
$lastid = $tweet['id_str'];
//pergunta?
$pos = strpos($tweet['text'],'?');
if($pos !== false) {
//responde pergunta
$rand = array_rand($answers);
$tw->update("@".$tweet['user']['screen_name']."
".$answers[$rand],$tweet['id_str']);
}
}
}
/* salva o $lastid como o id da última mention verificada*/
28. 8. Sites utilizando
TweetAuditor
Monitoramento e Estatísticas de contas Twitter
http://tweetauditor.in
TweetVote
Enquetes via Twitter
http://tweetvote.in
29. 9. Links
Site Oficial – documentação, demos, instruções
gerais
http://twittertools.in
Twittertools no GitHub
http://github.com/erikaheidi/Twittertools