Tutorial Windows Phone: Utilizando a biblioteca Link To Twitter

On 9 de fevereiro de 2015 by Gustavo Quintão

Introdução

Neste tutorial iremos mostrar como criar aplicações que utilizam a biblioteca Link To Twitter para acessar os dados do Twitter. Essa biblioteca tem como objetivo permitir que o desenvolvedor acesse os dados do twitter de modo semelhante ao utilizado para acessar dados locais usando o Linq To Sql.

Inicialmente o desenvolvedor deverá instalar a biblioteca através de seu pacote Nuget. Para isso basta procurar por LinkToTwitter no gerenciador de pacotes Nuget do Visual Studio.

Autorizando o aplicativo

O primeiro passo que devemos fazer após a instalação do pacote Nuget é autorizar o aplicativo a acessar os dados do Twitter. O twitter possui dois tipos de autorização principais, sendo eles:

  • Single User: O aplicativo tem acesso a somente uma conta fixa, geralmente utilizado quando o aplicativo só executa consultas no Twitter ou alguma eventual postagem seja feita diretamente na conta do aplicativo. São necessários o ConsumerKey e ConsumerSecret do aplicativo e o AccessToken e AccessTokenSecret da conta que acessará os dados do twitter.
  • Multi User: O aplicativo pode acessar a conta do usuário para fazer consultas e postagens diretamente na conta do mesmo. Deve utilizar o ConsumerKey e ConsumerSecret do aplicativo além de utilizar OAuth para obter o AccessToken e AccessTokenSecret do usuário.

Nesse tutorial utilizaremos o método Single User para poder fazer consultas. O método MultiUser será mostrado em um tutorial posterior que mostrará como fazer postagem direto na conta do usuário.

Caso o Twitter vá ser acessado em mais de um ponto na aplicação é desejável que a autorização seja feito no método construtor do aplicativo utilizando o pattern Singleton para que haja somente uma instância do Twitter no aplicativo. Nesta demonstração faremos todos os passos na própria pagina principal para simples demonstração.

O trecho de código a seguir é responsável pela autorização necessária para acessar os dados do Twitter. Caso o desenvolvedor não possua os dados necessários, ele deverá criar os mesmos na página para desenvolvedores do Twitter.
[sourcecode language=”c-sharp” wraplines=”false” collapse=”false”]
public SingleUserAuthorizer getAuthorizer()
{
SingleUserAuthorizer authorizer = new SingleUserAuthorizer
{
CredentialStore = new SingleUserInMemoryCredentialStore
{
ConsumerKey = "consumer_key",
ConsumerSecret = "consumer_secret",
AccessToken = "access_token",
AccessTokenSecret = "access_token_secret"
}
};
return authorizer;
}
[/sourcecode]

O ultimo passo antes de podermos fazer as consultas é instanciar o TwitterContext. O TwitterContext funciona de forma semelhante ao DataContext, porém devemos passar a autorização de acesso como parâmetro ao invés do caminho onde os dados estão armazenados.

[sourcecode language=”c-sharp” wraplines=”false” collapse=”false”]
var twitterContext = new TwitterContext(getAuthorizer());
[/sourcecode]

 Obtendo dados

Agora que possuímos uma instância do Twitter podemos utilizar a mesma para obter os dados. Como dito antes o TwitterContext é semelhante ao DataContext, assim, o modo de fazer requisições para ele é bem semelhante ao utilizado no DataContext. O Linq permite que representemos os dados da query como objetos, dessa forma a query será formulada como uma consulta utilizando objetos C# em pontos chaves. No exemplo a seguir podemos ver uma consulta que mostra a timeline do perfil da Universidade Federal de Ouro Preto.

[sourcecode language=”c-sharp” wraplines=”false” collapse=”false”]
var UfopTimeline = await
(from tweet in twitterContext.Status
where tweet.Type == StatusType.User && tweet.ScreenName == "UFOP"
select tweet).ToListAsync();
[/sourcecode]

Tweets obtidos a partir da consulta pelo usuário UFOP

Tweets obtidos a partir da consulta pelo usuário UFOP

Já neste exemplo possuímos uma consulta mais abrangente. Ela irá exibir qualquer citação de UFOP.

[sourcecode language=”c-sharp” wraplines=”false” collapse=”false”]
var UfopResponse = await
(from search in twitterContext.Search
where search.Type == SearchType.Search && search.Query == "ufop"
select search).FirstOrDefaultAsync();
[/sourcecode]

Tweets obtidos a partir de uma busca pelo termo UFOP

Tweets obtidos a partir de uma busca pelo termo UFOP

Após a execução da consulta os dados correspondentes ao resultado ficarão disponíveis na variável utilizada, no ultimo caso UfopResponse. A partir dessa variável é possível acessar todos os dados que foram obtidos na query. No trecho de código a seguir é exemplificado como adicionar o nome de usuário, a url da imagem do usuário e o conteúdo do tweet em um view-model para posterior exibição para o usuário.

[sourcecode language=”c-sharp” wraplines=”false” collapse=”false”]
if (UfopResponse != null && UfopResponse.Statuses != null)
{
foreach (var Tweet in UfopResponse.Statuses)
{

TweetsCitationsVM.Insert(i, new TweetViewModel()
{
TweetContent = Tweet.Text,
UserIcon = Tweet.User.ProfileImageUrlHttps,
UserName = Tweet.User.ScreenNameResponse
});
}
}
[/sourcecode]

É importante salientar que qualquer consulta deve ser executada dentro de um método assíncrono de modo a não causar travamentos no programa decorrentes da realização da consulta. No próximo tutorial abordaremos como permitir que o usuário faça login com a própria conta e poste status na mesma.

One Response to “Tutorial Windows Phone: Utilizando a biblioteca Link To Twitter”

  • Genial essa postagem, mais uma opção para a valorização do app. Gostaria de saber se conhecem um webservice alem do 000webhost para armazenar aquivos json e xml e que seja gratuito. Meu app faz a comunicação com esses arquivos para atualizar informações…

Deixe um comentário

O seu endereço de e-mail não será publicado.