.NET

5 mai, 2010

Integração com redes sociais usando .NET

Publicidade

Primeiro, vamos definir o que é uma rede social:

Uma rede social é uma estrutura social compostapor pessoas (ou organizações, territórios, etc.) – designadas como nós – que
estão conectadas por um ou vários tipos de relações (de amizade, familiares,
comerciais, sexuais, etc.), ou que partilham crenças, conhecimento ou
prestígio – Wkipedia

Do meu ponto de vista, vejo as ferramentas de networking como Facebook e
Linkedin com redes sociais também.

Encurtando URL

Para
encurtar a URL utilizaremos o serviço do site tinyurl.com, é muito simples,
basta passar chamar a URL http://tinyurl.com/api-create.php,
passando o parâmetro url com o caminho completo da sua url, ou seja, ficaria
assim, se fôssemos implementar:

http://tinyurl.com/api-create.php?url=SUA_URL

Pré-requisitos

  • .Net Framework
    2.0 ou superior
  • Visual Studio 2005 ou compatível

Projeto

Crie um
novo Website, na Default.aspx adicione os seguintes controles:

Tipo ID
TextBox UrlTextBox
Button GerarUrlsButton
LinkButton OrkutLinkButton
LinkButton TwitterLinkButton
LinkButton FacebookLinkButton
Label UrlLabel

 

O código da página ficará semelhante
com o código abaixo:

<asp:TextBox ID="UrlTextBox" runat="server"></asp:TextBox>

<asp:Button ID="GerarUrlsButton" runat="server" Text="Gerar URL's" OnClick="GerarUrlsButton_Click">

</asp:Button>

<br />

<asp:LinkButton ID=" OrkutLinkButton" runat="server" Text="Orkut"></asp:LinkButton>

<br />

<asp:LinkButton ID="TwitterLinkButton" runat="server" Text="Twitter"></asp:LinkButton>

<br />

<asp:LinkButton ID="FacebookLinkButton" runat="server" Text="Facebook"></asp:LinkButton>

<br />

asp:Label ID="UrlLabel" runat="server"></asp:Label>

Namespaces

Inclua os seguintes
namespaces na sua página:

  • System.Net
  • System.IO
  • System.Text

Code Behind

Eu fiz um método que busca
a url resumida no tinyurl, dessa maneira basta apenas adicioná-la a um link.

  
 /// <summary>
 /// Devolve a url resumida
 /// </summary>
 /// <param name="url">url completa</param>
 /// <returns>url resumida</returns>
 protected string ObterUrlCurta(string url)
 {
 try
 {
 if (!url.ToLower().StartsWith("http") && !url.StartsWith("ftp"))
 {
 url = "http://" + url;
 }

 WebRequest request = WebRequest.Create("http://tinyurl.com/api-create.php?url=" + url);

 WebResponse response = request.GetResponse();

 string urlCurta = string.Empty;

 using (StreamReader reader = new StreamReader(response.GetResponseStream()))
 {
 urlCurta = reader.ReadToEnd();
 }
 // se tudo der certo, devolve a url resumida
 return urlCurta;
 }
 catch (Exception)
 {
 // se ocorrer erro devolve a mesma url
 return url;
 }
 }

Para obter a url do
Facebook eu utilizei o seguinte código:

 /// <summary>

 /// Devolve a url resumida do Facebook

 /// </summary>

 /// <param name="urlParaCompartilhar">url que será compartilhada</param>

 /// <param name="tituloPagina">título da página</param>

 /// <returns>url resumida do facebook</returns>

 public string ObterUrlFacebook(string urlParaCompartilhar, string tituloPagina)

 {

 StringBuilder url = new StringBuilder(string.Format("http://www.facebook.com/sharer.php?u={0}&t={1}",

 ObterUrlCurta(urlParaCompartilhar), tituloPagina));

 return url.ToString();

 }

Para obter
a url do Twiiter eu utilizei o seguinte código:

 /// <summary>

 /// Devolve a url resumida do Twitter

 /// </summary>

 /// <param name="urlParaCompartilhar">url que será compartilhada</param>

 /// <param name="tweet">mensagem/tweet</param>

 /// <param name="usuarioTwitter">por quem ou qual canal</param>

 /// <returns>url resumida do twitter</returns>

 public string ObterUrlTwitter(string urlParaCompartilhar, string tweet, string usuarioTwitter)

 {

 StringBuilder url = new StringBuilder(string.Format("http://twitter.com/home?status={0} {1}",

 ObterUrlCurta(urlParaCompartilhar), tweet));



 if (usuarioTwitter != string.Empty)

 url.Append(string.Format(" - por (@{0})", usuarioTwitter));



 return url.ToString();

 }

E para
o Orkut, utilizei o seguinte código:

 /// <summary>

 /// Devolve a url resumida do Orkut

 /// </summary>

 /// <param name="urlParaCompartilhar">url que será compartilhada</param>

 /// <param name="tituloPagina">título da página</param>

 /// <returns>url resumida do orkut</returns>

 public string ObterUrlOrkut(string urlParaCompartilhar, string tituloPagina)

 {

 StringBuilder url = new StringBuilder(string.Format("http://promote.orkut.com/preview?nt=orkut.com&tt={0}&du={1}",

 ObterUrlCurta(urlParaCompartilhar), tituloPagina));

 return url.ToString();

 }

No evento onclick do botão GerarUrlsButton,
adicione o seguinte código:

/// <summary>

 /// Gera url's para os links

 /// </summary>

 /// <param name="sender"></param>

 /// <param name="e"></param>

 protected void GerarUrlsButton_Click(object sender, EventArgs e)

 {

 // limpa os atributos link orkut

 OrkutLinkButton.Attributes.Clear();



 // adiciona o evento onclick chamando a função javascript abrirPagina e passa o parâmetro url

 OrkutLinkButton.Attributes.Add(

 "onclick",

 string.Format(

 "abrirPagina('{0}');",

 ObterUrlOrkut(

 UrlTextBox.Text,

 "Teste Orkut")));



 TwitterLinkButton.Attributes.Clear();

 TwitterLinkButton.Attributes.Add(

 "onclick",

 string.Format(

 "abrirPagina('{0}');",

 ObterUrlTwitter(

 UrlTextBox.Text,

 "Teste Twitter",

 "seu_usuario_twitter_ou_outro")));



 FacebookLinkButton.Attributes.Clear();

 FacebookLinkButton.Attributes.Add(

 "onclick",

 string.Format(

 "abrirPagina('{0}');",

 ObterUrlFacebook(

 UrlTextBox.Text,

 "Teste Facebook")));



 UrlLabel.Text = UrlTextBox.Text;

 UrlTextBox.Text = string.Empty;

 }

Muito simples
e bem legal, a possibilidade de o visitante ou cliente do site poder compartilhar
o conhecimento e gerar conteúdo em redes sociais é muito boa, desde que seu site seja bom, ou sua empresa realmente preste um bom serviço.

Mais
uma vez espero que esse artigo contribua para a comunidade.

Referências