ASP .NET -
Integração com Twitter via OAuth
![]()
Este artigo mostra uma as maneira de integrar a sua aplicação ASP .NET com o Twitter via OAuth.
Mas o que vem a ser OAuth ?
OAuth é um protocolo de autorização de padrão aberto que permite que terceiros acessem os dados do usuário sem precisar saberem a senha dele. Em vez de usuários compartilhando suas senhas diretamente em um aplicativo, o OAuth serve como uma "chave de manobrista" que os aplicativos usam para acessar os dados de um usuário em seu lugar.
Resumindo, a autenticação por meio do OAuth é feita em 3 etapas:
Assim, o objetivo principal do OAuth é permitir que uma aplicação se autentique em outra "em nome de um usuário", sem precisar ter acesso a senha dele.
fonte: http://support.google.com/a/bin/answer.py?hl=pt&answer=61017
Recursos usados
Criando uma nova aplicação no Twitter
![]()
Vamos cumprir essa etapa criando uma nova aplicação no Twitter para obter as credenciais que iremos usar em nossa aplicação ASP .NET.
Acesse o link https://dev.twitter.com/
![]() |
Clique no link Sign Up e faça o login com as suas credenciais do Twitter:
![]() |
Após estar logado clique no seu ícone e a seguir em My applications:
![]() |
A seguir clique no botão Create a new Application
![]() |
Defina o nome da aplicação sua descrição e a url com a porta da aplicação Web conforme abaixo:
Nota: Você provavelmente irá usar outra porta na url da aplicação e não a que esta na figura abaixo:
![]() |
Ao final você receberá as credenciais que terá que usar na aplicação exemplo:
(Os códigos recebidos para a minha aplicação estão ocultos)
![]() |
Agora que você já possui o seu Consumer Key e Consumer secret vamos criar a aplicação ASP .NET.
Criando a aplicação ASP .NET
Nesta fase eu vou usar a API LinqToTwitter que é um provedor LINQ de terceiros de código aberto que pode ser usado para interagir com o Twitter. Ele usa a sintaxe LINQ padrão para consultas e inclui chamadas de método para mudanças através da API do Twitter.
Veja detalhes na página do CodePlex: http://linqtotwitter.codeplex.com/
Abra o Visual Studio 2012 Express for web e clique em New Web Site selecione a linguagem Visual Basic e o template ASP .NET Empty Web Site informando o nome TwitterOAuth;
A seguir no menu WEBSITE clique em Add New Item e selecione o template Web Forms aceitando o nome padrão Default.aspx.
Dessa forma incluímos um novo web form no nosso web site.
Vamos agora incluir a referência a API LInqToTwitter usando o Nuget.
Acesse o menu TOOLS e clique em Library Package Manager -> Mange Nuget Package for Solution;
Digite LinqToTwitter na caixa de pesquisa e a seguir clique na opção para instalar o LinqToTwitter no seu projeto;
![]() |
Agora vamos incluir na página Default.aspx os seguintes controles:
O código do controle ListView no modo Source é o seguinte:
<asp:ListView ID="TwitterListView" runat="server">
<LayoutTemplate>
<table id="Table1" runat="server">
<tr id="Tr1" runat="server">
<th>Imagem </th>
<th>Nome </th>
<th>Último Tweet </th>
</tr>
<tr id="itemPlaceholder">
</tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr id="Tr2" runat="server">
<td>
<asp:Image ID="UserImage" runat="server" ImageUrl='<%#Eval("User.ProfileImageUrl") %>' />
</td>
<td><asp:Label ID="NameLabel" runat="server" Text='<%#Eval("User.Name") %>' /> </td>
<td><asp:Label ID="TweetLabel" runat="server" Text='<%#Eval("Text") %>' /> </td>
</tr>
</ItemTemplate>
</asp:ListView>
|
Observe que eu estou usando um templateField para exibir informações da imagem, nome e último tweet na página.
Defina o leiaute da página Default.aspx conforme a figura abaixo:
![]() |
Antes de definir o código que usa os recursos da API LinqToTwitter temos que armazenar as credenciais geradas no site do Twitter no arquivo web.Config;
Abaixo vemos o arquivo web.Config e em negrito as duas tags add key onde armazenamos as credenciais:
| <?xml version="1.0"?> <!-- For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <system.web> <compilation debug="true" strict="false" explicit="true" targetFramework="4.5"/> <httpRuntime targetFramework="4.5"/> </system.web> <appSettings> <!-- Fill in your consumer key and secret here to make the OAuth sample work. --> <!-- Twitter sign-up: https://dev.twitter.com/apps --> <add key="twitterConsumerKey" value="uuVXFO0NWg4pTPQ"/> <add key="twitterConsumerSecret" value="Mz89n2NFlz3cCM304CmU2Pln4jNE"/> </appSettings> </configuration> |
Nota: Essas credenciais não devem ser usadas pois não vão funcionar gere as suas no site do Twitter.
Agora vamos abrir o arquivo code-behind Default.aspx.vb e incluir o código abaixo
Imports LinqToTwitter
Partial Class _Default
Inherits System.Web.UI.Page
Private auth As WebAuthorizer Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim credentials As IOAuthCredentials = New SessionStateCredentials()
If credentials.ConsumerKey Is Nothing OrElse credentials.ConsumerSecret Is Nothing Then
credentials.ConsumerKey = ConfigurationManager.AppSettings("twitterConsumerKey")
credentials.ConsumerSecret = ConfigurationManager.AppSettings("twitterConsumerSecret")
End If
auth = New WebAuthorizer() With {.Credentials = credentials, .PerformRedirect = Sub(authUrl) Response.Redirect(authUrl)}
If Not Page.IsPostBack Then
auth.CompleteAuthorization(Request.Url)
End If
If String.IsNullOrWhiteSpace(credentials.ConsumerKey) OrElse String.IsNullOrWhiteSpace(credentials.ConsumerSecret) Then
lblinfo.Text = "Defina as configurações para Consumerkey e ConsumerSecret no seu arquivo web.config"
ElseIf auth.IsAuthorized Then
lblinfo.Text = ""
Else
lblinfo.Text = "Você não esta autorizado pelo twitter."
End If
End Sub
Private Sub ExibirDados()
lblNomeLogin.Text = "Logado como : " + auth.Credentials.ScreenName
lblAutorizado.Text = ""
lblAutorizado.Text &= "<br />OAuthToken: " & auth.Credentials.OAuthToken
'lblAuth.Text &= "<br />AccessToken: " & auth.Credentials.AccessToken
'lblAuth.Text &= "<br />ConsumerKey: " & auth.Credentials.ConsumerKey
'lblAuth.Text &= "<br />ConsumerSecret: " & auth.Credentials.ConsumerSecret
lblAutorizado.Text &= "<br />ScreenName: " & auth.Credentials.ScreenName
lblAutorizado.Text &= "<br />UserId: " & auth.Credentials.UserId
If auth.Credentials.OAuthToken <> "" Then
Dim ctx = New TwitterContext(auth)
'Dim tweet = ctx.UpdateStatus("Testando LINQ to Twitter em " & Date.Now.ToString)
'lblTest.Text = "Status returned: (" & tweet.StatusID & ") " & tweet.User.Name & ", " & tweet.Text
Dim search =
(From srch In ctx.Search
Where srch.Type = LinqToTwitter.SearchType.Search AndAlso
srch.Query = "instagood") _
.SingleOrDefault()
TwitterListView.DataSource = search.Statuses
TwitterListView.DataBind()
End If
End Sub
Protected Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
auth.BeginAuthorization(Request.Url, True)
ExibirDados()
End Sub
End Class
|
O código usa o namespaces Imports LinqToTwitter
No evento Load obtemos as credenciais do Twitter do arquivo web.Config, fazemos a verificação e criamos uma instância da API.
Quando o usuário clica no botão para fazer o login checamos as credenciais e chamamos a rotina ExibirDados() onde exibimos informações do usuário do Twitter e fazemos uma consulta usando a hashtag #instagood.
Você variar e usar outras hashtags na consulta. Abaixo eu listo as 10 mais populares segundo o Huffington Post:
1. #love - 143,817,139 fotos
2. #instagood - 97,570,915 fotos
3. #me - 80,693,198 fotos
4. #tbt - 75,411,509 fotos
5. #cute - 75,047,873 fotos
6. #photooftheday - 70,995,806 fotos
7. #instamood - 64,925,462 fotos
8. #beautiful - 54,570,181 fotos
9. #picoftheday - 53,776,027 fotos
10. #igers - 52,997,258 fotos
Executando a aplicação iremos obter:
Se você não estiver autorizado será apresentada a página que solicita a autorização via Twitter:
![]() |
Clicando em - Autorizar aplicativo - a rotina ExibirDados() será executada exibindo os valores na página Default.aspx:
![]() |
E assim mostramos como integrar o Twitter com uma aplicação ASP .NET usando o OAuth.
Existem outras maneiras de fazer isso e em um próximo artigo eu vou mostrar o recurso DotNetOpenAuth.
Pegue o projeto completo aqui:
TwitterOAuth.zip
João 4:22
Vós adorais o que não conheceis; nós adoramos o que conhecemos; porque a salvação vem dos judeus.João 4:23
Mas a hora vem, e agora é, em que os verdadeiros adoradores adorarão o Pai em espírito e em verdade; porque o Pai procura a tais que assim o adorem.João 4:24
Deus é Espírito, e é necessário que os que o adoram o adorem em espírito e em verdadeReferências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#