Desenvolvimento - C#
Integração com redes sociais, como fazer - TinyURL, Twitter e Facebook
Integração com redes sociais usando o TinyURL, Orkut, Twitter e Facebook a partir de uma página feita com ASP.NET.
por Oscar CasagrandeTodo mundo já quis colocar em suas páginas a função de compartilhar o conteúdo em redes sociais, bom, com um pouquinho de paciência.
Bom, pra quem não sabe, rede social é “Uma rede social é uma estrutura social composta por 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.”, definição da Wkipedia (http://pt.wikipedia.org/wiki/Rede_social). 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 fossemos 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;
}
Referências
http://socialbookmarks.codeplex.com/
http://shareourideas.wordpress.com/2010/03/13/orkut-bookmark-url-format/
http://blastersystems.com/blog/?p=221
http://msdn.microsoft.com/pt-br/library/system.net.webrequest(VS.90).aspx
http://msdn.microsoft.com/pt-br/library/system.net.webresponse(VS.90).aspx
http://msdn.microsoft.com/pt-br/library/system.io.streamreader(VS.90).aspx
Conclusão
Muito simples e bem legal, a possibilidade do visitante ou cliente do site poder compartilhar o conhecimento e gerar conteúdo em redes sociais é muito boa, lógico que para sites ruins ou empresas que não prestam um bom serviço isso é um tiro no pé!
Mais uma vez espero que esse artigo contribua para a comunidade.