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 Casagrande



                Todo 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://tinyurl.com/

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.

Conheça o curso Curso Integrando Aplicativos ASP.NET C# com Redes Sociais (Twitter e Facebook) da Devmedia

Oscar Casagrande

Oscar Casagrande - Técnico em Processamento de Dados pelo Colégio Técnico Elevação, tecnólogo em Desenvolvimento de Sistemas para Web no Instituto Brasileiro de Tecnologia Avançado (IBTA, agora Instituto Veris) e fazendo pós-graduação em Engenharia de Sistemas com ênfase em SOA no Instituto Veris.
Blog:
http://oscarcasagrande.blogspot.com.