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
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
Dados da SuperInteressante
Dezembro 2010
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
3. Twitter API
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
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
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
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
5. Registrando uma aplicação
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)
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
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
6.1 Retornos da API

 
     Principais retornos
     
         Objeto Usuário
     
         Objeto Tweet
     
         Objeto Timeline
     
         Mensagens de erro
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
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] =>
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
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);
 }
6.3 Métodos
 
     User-related
     
         remainingCalls()
     
         getCredentials()
     
         checkConnections(users_logins)
     
         isFollower(user_login)
     
         follow(user_login)
     
         unfollow(user_login)
     
         getFollowers([user_login,cursor])
     
         getFriends([user_login,cursor])
     
         getUsersInfo(users_ids)
6.3 Métodos
 
     Tweets-related
     
         update(msg[,inreplyto,autoshort])
     
         getTweet(id)
     
         getTimeline([limit])
     
         getMentions([limit])
     
         getRetweets([limit])
     
         getFavorites([page,limit])
6.3 Métodos
 
     Public
     
         getTrending()
     
         search(query)
 
     Chamada Genérica
     
         makeRequest(api_url[,$args=null,$method='GET'])
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
/* 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*/
8. Sites utilizando
 
     TweetAuditor
     
         Monitoramento e Estatísticas de contas Twitter
     
         http://tweetauditor.in
 
     TweetVote
     
         Enquetes via Twitter
     
         http://tweetvote.in
9. Links
 
     Site Oficial – documentação, demos, instruções
     gerais
     
         http://twittertools.in
 
     Twittertools no GitHub
     
         http://github.com/erikaheidi/Twittertools
OBRIGADO!
 erika@entrebits.com.br

Desenvolvimento de aplicações para o 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 dadosdo 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
  • 4.
  • 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
  • 6.
  • 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 entreAplicaçõ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 umaaplicaçã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
  • 11.
    5. Registrando umaaplicação
  • 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 daAPI  Principais retornos  Objeto Usuário  Objeto Tweet  Objeto Timeline  Mensagens de erro
  • 19.
    6.1 Retornos daAPI: 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 daAPI: 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); }
  • 23.
    6.3 Métodos  User-related  remainingCalls()  getCredentials()  checkConnections(users_logins)  isFollower(user_login)  follow(user_login)  unfollow(user_login)  getFollowers([user_login,cursor])  getFriends([user_login,cursor])  getUsersInfo(users_ids)
  • 24.
    6.3 Métodos  Tweets-related  update(msg[,inreplyto,autoshort])  getTweet(id)  getTimeline([limit])  getMentions([limit])  getRetweets([limit])  getFavorites([page,limit])
  • 25.
    6.3 Métodos  Public  getTrending()  search(query)  Chamada Genérica  makeRequest(api_url[,$args=null,$method='GET'])
  • 26.
    7. Exemplo: Oráculode 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 aslibs 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
  • 30.