Desenvolvimento - C#
Postando no Twiiter com .NET e Migre.me
Nesse artigo veremos um assunto bem bacana, integração com redes sociais, vamos dar uma olhada em como usar uma API que o Twitter disponibiliza e uma API do site Migre.me.
por Oscar CasagrandePessoal, após um tempo sem escrever volto aqui com um assunto bem bacana, integração com redes sociais, vamos dar uma olhada em como usar uma API que o Twitter disponibiliza e uma API do site Migre.me (um encurtador de URL) vamos mandar nossas mensagens “via API” com a URL encurtada.
Podemos fazer isso com aplicações web e desktop. Vamos lá!
Web
Crie um novo website e no code behind da página Default.aspx adicione os seguintes using’s/import’s:
· System.Net;
· System.IO;
· System.Xml;
· System.Web
C#
using System.Net;
using System.IO;
using System.Xml;
using System.Web;
VB.NET
Imports System.Net
Imports System.IO
Imports System.Xml
Imports System.Web
Agora na pagina Default.aspx adicione os seguintes controles:
ID |
Tipo |
|
EmailTextBox |
TextBox |
|
SenhaTextBox |
TextBox |
TextMode=Password |
ByTextBox |
TextBox |
|
UrlTextBox |
TextBox |
|
MensagemTextBox |
TextBox |
|
PostarButton |
Button |
Text=Postar |
Seu código deve ter ficado mais parecido com esse:
<table>
<tr>
<td>
</td>
<td>
<asp:TextBox ID="EmailTextBox" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
Senha
</td>
<td>
<asp:TextBox ID="SenhaTextBox" runat="server" TextMode="Password"></asp:TextBox>
</td>
</tr>
<tr>
<td>
Mensagem
</td>
<td>
<asp:TextBox ID="MensagemTextBox" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
URL
</td>
<td>
<asp:TextBox ID="UrlTextBox" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
By
</td>
<td>
<asp:TextBox ID="ByTextBox" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td colspan="2">
<asp:Button ID="PostarButton" runat="server" Text="Postar" OnClick="PostarButton_Click" />
</td>
</tr>
</table>
Migre.Me
Nesse momento iremos fazer nossa aplicação conversar com a API do migre.me, vamos usar a API que retorna um XML.
No Code Behind crie uma função que retorno uma string chamada CreateMigreMeUrl que recebe três parâmetros também do tipo string denominadas by, url, message, conforme os exemplos abaixo:
C#
public string CreateMigreMeUrl(string by, string url, string message)
{
string retorno = string.Empty;
// essa url será acessada pelo nosso sistema para gerar a url encurtada
string urlMigreMe = string.Format("http://migre.me/api.xml?url={0}", url);
// o WebClient é classe que irá “baixar” o retorno da URL do Migre.ME
WebClient client = new WebClient();
// O Stream irá ler o retorno do WebClient
Stream stream = client.OpenRead(urlMigreMe);
// O XmlTextReader é utilizado para receber os dados do Stream
XmlTextReader xmlReader = new XmlTextReader(stream);
// Nesse momento é feita uma busca pelo nó do XML que contém no valor o texto “http://migre.me/”, assim que o texto é encontrado a variável retorno é montada
while (xmlReader.Read())
{
if (xmlReader.NodeType == XmlNodeType.Text)
{
if (xmlReader.Value.ToLower().Contains("http://migre.me/"))
{
retorno = string.Format("{0} {1} {2}", message, xmlReader.Value, by);
}
}
}
return retorno;
}
VB.NET
Public Function CreateMigreMeUrl(ByVal by As String, ByVal url As String, ByVal message As String)
Dim retorno As String = String.Empty
Dim urlMigreMe = String.Format("http://migre.me/api.xml?url={0}", url)
Dim client As New WebClient
Dim stream As Stream
stream = client.OpenRead(urlMigreMe)
Dim xmlReader As New XmlTextReader(stream)
While xmlReader.Read
If xmlReader.NodeType == XmlNodeType.Text Then
If xmlReader.Value.ToLower().Contains("http://migre.me") Then
retorno = String.Format("{0} {1} {2}", message, xmlReader.Value, by)
End If
End If
End While
Return retorno
End Function
Agora faremos a função que será responsável por post nosso “twit”, muito simples e fácil, crie uma função do tipo void chamada PostTweet que recebe três parâmetros do tipo string denominados username, password, tweet.
C#
public static void PostTweet(string username, string password, string tweet)
{
try
{
// Os dados do usuário são “Codificados” nesse momento
string user = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(username + ":" + password));
// a variável byte recebe a saída do post
byte[] bytes = System.Text.Encoding.UTF8.GetBytes("status=" + tweet);
// Inicializa o HttpWebRequest
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://twitter.com/statuses/update.xml");
// Define o método como POST
request.Method = "POST";
// se verdadeiro espera respostas para requisições POST. O valor padrão é true.
request.ServicePoint.Expect100Continue = false;
// adiciona o cabeçalho de autenticação da API do Twitter
request.Headers.Add("Authorization", "Basic " + user);
// Definie o cabeçalho
request.ContentType = "application/x-www-form-urlencoded";
// Tamanho do buffer
request.ContentLength = bytes.Length;
// Pega o retorno
Stream reqStream = request.GetRequestStream();
// Escreve o retorno
reqStream.Write(bytes, 0, bytes.Length);
// Fecha a requisção
reqStream.Close();
}
catch (Exception ex)
{
// As exceções devem ser tratadas aqui
}
}
VB.NET
Public Sub PostTweet(ByVal username As String, ByVal password As String, ByVal tweet As String)
Try
Dim user As String = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(username + ":" + password))
Dim bytes() As Byte = System.Text.Encoding.UTF8.GetBytes("status=" + tweet)
Dim request As HttpWebRequest
request = HttpWebRequest.Create("http://twitter.com/statuses/update.xml")
request.ServicePoint.Expect100Continue = False
request.Headers.Add("Authorization", "Basic " + user)
request.ContentType = "application/x-www-form-urlencoded"
request.ContentLength = bytes.Length
Dim reqStream As Stream = request.GetRequestStream()
reqStream.Write(bytes, 0, bytes.Length)
reqStream.Close()
Catch ex As Exception
"As exceções devem ser tratadas aqui
End Try
End Sub
No evento click do botão postar adicione o seguinte código:
C#
PostTweet(EmailTextBox.Text, SenhaTextBox.Text, CreateMigreMeUrl(ByTextBox.Text, UrlTextBox.Text, MensagemTextBox.Text));
VB.NET
PostTweet(EmailTextBox.Text, SenhaTextBox.Text, CreateMigreMeUrl(ByTextBox.Text, UrlTextBox.Text, MensagemTextBox.Text))
Referências
Com isso finalizamos o desenvolvimento dessa integração, basta agora utilizarmos um usuário válido que ao postar alguma coisa no Twiiter.
Espero que isso tenha agregado valor a vocês.
Um grande abraço e até a próxima.