Ola Pessoal. Hoje eu vou falar sobre uma biblioteca para recuperar os dados do twitter que é a LinqToTwitter.
Ela é fácil de trabalhar a documentação é boa e tem bastante exemplos de uso.
Então vamos lá. Mãos a obra.
Preparando o ambiente
Siga os passos abaixo na ordem descrita
Para que o twitter funcione de modo correto precisamos criar uma aplicação dentro do twitter. Este passo não é obrigatório caso você queira pegar apenas os tweets públicos, mas se desejar pegar de um usuário específico terá que usar os passos descritos abaixo.
-
Faça login na sua conta do twitter neste link https://dev.twitter.com/apps/new
-
Uma página semelhante à esta deverá ter sido aberta para você: (Clique na miniatura para ver a
imagem da tela.) -
Preencha os campos
-
“Name” (Nome da sua aplicação)
-
“Description” (Descrição da sua aplicação)
-
“WebSite” (Coloque a URL do seu site onde as pessoas irão acessar os tweets)
-
Mantenha esta página aberta, pois iremos usar estas configurações.
Passos para criar o projeto
-
Faça o download da dll Linq2Twitter. Link da versão que usamos no artigo http://linqtotwitter.codeplex.com/releases/view/69833.
-
Descompacte o arquivo que você recebeu, lembre-se do diretório, você ira precisar dele 🙂
-
Abra o Visual Studio e crie uma nova aplicação web
-
Faça referencia à dll LinqToTwitter.dll, ela deverá estar no diretório onde você descompactou os arquivos no passo 2
Você não precisa ter uma conta no twitter para usar a DLL, só que neste caso você ira recuperar apenas os tweeters públicos
Código de exemplo para recuperar os tweets públicos:
<%@ Page Language="C#" AutoEventWireup="true" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <%@ Import Namespace="System.Linq" %> <%@ Import Namespace="System.Data" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Linq To Twitter</title> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { try { var twitterCtx = new LinqToTwitter.TwitterContext(); var publicTweets = from tweet in twitterCtx.Status where tweet.Type == LinqToTwitter.StatusType.Public select tweet; System.Collections.Generic.List<object> data = new System.Collections.Generic.List<object>(); publicTweets.ToList().ForEach( tweet => { data.Add(new { Nome = tweet.ScreenName, Mensagem = tweet.Text }); } ); grdTwitter.DataSource = data; grdTwitter.DataBind(); } catch (Exception ex) { Context.Response.Write("Impossível conectar ao twitter<br/>" + ex.ToString()); } } </script> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView runat="server" ID="grdTwitter"> <Columns> </Columns> </asp:GridView> </div> </form> </body> </html>
Ok! Agora queremos pegar um tweet de um determinado usuário. Como fazer?
Prestem bastante atenção aos comentários pelo código
<%@ Page Language="C#" AutoEventWireup="true" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <%@ Import Namespace="System.Linq" %> <%@ Import Namespace="System.Data" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Linq To Twitter</title> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { try { //agora que temos uma aplicação cadastrada //temos que criar a autenticação ao twitter //primeiro criamos um objeto de autorização do tipo LinqToTwitter.SignInAuthorizer LinqToTwitter.SignInAuthorizer auth = new LinqToTwitter.SignInAuthorizer() { //lembra daquele cadastro que fizemos no twitter? //link: https://dev.twitter.com/apps/new //os dados que foram informados pelo twitter deverão ser informados aqui //reparem que o mesmo nome da propriedade aqui é o mesmo nome da página do twitter. //Não tem como errar. Credentials = new LinqToTwitter.InMemoryCredentials() { ConsumerKey = "seu consumer key", ConsumerSecret = "seu consumer secret", //ATENÇÃO //nesta propriedade informe o valor da página "Access token" OAuthToken = "aqui vai o Access token", //ATENÇÃO //Nesta propriedade informe o valor da página "Access token secret" AccessToken = "Aqui vai o Access token secret" }, //estas podem manter como estão UseCompression = true, OAuthRequestTokenUrl = "https://api.twitter.com/oauth/request_token", OAuthAccessTokenUrl = "https://api.twitter.com/oauth/access_token", OAuthAuthorizeUrl = "https://api.twitter.com/oauth/authorize", }; auth.Authorize(); var twitterCtx = new LinqToTwitter.TwitterContext(auth); var publicTweets = from tweet in twitterCtx.Status where tweet.Type == LinqToTwitter.StatusType.User && tweet.ScreenName == "desenvolvedores" select tweet; System.Collections.Generic.List<object> data = new System.Collections.Generic.List<object>(); publicTweets.ToList().ForEach( tweet => { data.Add(new { Nome = tweet.ScreenName, Mensagem = tweet.Text, Site = tweet.User.URL, }); }); grdTwitter.DataSource = data; grdTwitter.DataBind(); } catch (Exception ex) { Context.Response.Write("Impossível conectar ao twitter<br/>" + ex.ToString()); } } </script> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView runat="server" ID="grdTwitter"> <Columns> </Columns> </asp:GridView> </div> </form> </body> </html>
Lembre-se: No twitter na tela que se configura o site você terá sempre que informar para qual site está liberado sua aplicação. Se não fizer isso, pode ser que não funcione quando você publicar sua aplicação.
É isso ai pessoal 🙂
Até o próximo
♦ Marcelo