Avançar para a área de conteúdo

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Todas as informações enviadas são seguras.

  • Fechar [x]

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Todas as informações enviadas são seguras.

  • Fechar [x]

Acessando Web sites de Rede Social Através de OAuth, Parte 3: Implementar o Cliente Web Twitter no Google App Engine

Xiaobo Yang, Software Developer, Consultant
Xiaobo Yang
Xiaobo Yang é desenvolvedor de Java corporativo e trabalha no Reino Unido. Possui interesse em Enterprise Information Systems, em particular, portais corporativos. Xiaobo é PhD em engenharia aeroespacial pela Universidade de Glasgow.

Resumo:  OAuth é um protocolo aberto que permite que os usuários compartilhem seus recursos protegidos entre Web sites diferentes, sem colocar em risco a exposição de credenciais dos usuários. A Parte 1 série apresentou o OAuth e mostrou como desenvolver um cliente Twitter desktop habilitado para OAuth. Na Parte 2, você viu como desenvolver um cliente Twitter Web habilitado para OAuth. Nesta parte final da série, você implementará o aplicativo da Web desenvolvido na Parte 2 no Google App Engine (GAE).

Data:  17/Mai/2011
Nível:  Intermediário Também disponível em :   Inglês
Atividade:  1341 visualizações
Comentários:  


OAuth permite que um site de consumidor acesse de um modo melhor os recursos protegidos de um usuário mantidos em um provedor de serviços. Com OAuth, as credenciais nunca são expostas a sites a não ser o em que os dados do usuário são originalmente mantidos. Com o cliente Twitter desktop desenvolvido na Parte 1, é possível atualizar o status do seu Twitter após conceder a MyTtDesktopClient acesso aos seus dados mantidos no Twitter. Para um usuário que retorna, é uma boa experiência do usuário, visto que o token de acesso pode ser reutilizado. A Parte 2 mostrou como usar OAuth para desenvolver um cliente Twitter Web que permite que os usuários sejam autenticados para o Twitter por meio de OAuth e atualizem seu status. Ela também mostra as linhas de tempo de amigos.

Neste artigo, você verá como fazer o seu aplicativo da Web funcionar em um ambiente de produção. Você migrará o cliente Twitter desenvolvido na Parte 2 para o Google App Engine (GAE). Não é possível simplesmente implantar o arquivo WAR; algumas modificações são necessárias para fazê-lo funcionar no GAE. A forma mais fácil de trabalhar com o GAE é usar o Google Plugin for Eclipse, que suporta o desenvolvimento de GAE e Google Web Toolkit (GWT).

É possível fazer o download do código de amostra usado neste artigo.

Google App Engine

O GAE, que é fornecido pelo Google, permite que aplicativos da Web sejam executados na infraestrutura do Google. Um grande benefício do GAE é que os seus aplicativos podem ser dimensionados com facilidade à medida que o armazenamento de dados e o tráfego precisar crescer. É possível enfocar o desenvolvimento de software sem se preocupar com a manutenção da Web e do servidor de banco de dados. Com uma quantidade razoável de tráfego para os seus aplicativos implantada no GAE, é possível utilizá-lo gratuitamente. Quando cada vez mais usuários forem atraídos para o seu site, será possível adquirir mais tempo de CPU e armazenamento de dados do Google. No momento da redação deste artigo, GAE suporta Python e código Java™ .


Registre seu aplicativo da Web com o Google

Todos os aplicativos do GAE precisam ser registrados no Google.

  1. Se você não tiver uma conta Google, crie uma.
  2. Acesse Google App Engine e faça login.
  3. Clique em Create an Application. Você será solicitado a fornecer seu país e número de celular.

    O Google enviará um código de verificação ao seu celular.

  4. Após a verificação, faça logon no GAE e clique em Create an Application para criar seu aplicativo da Web.

Por exemplo, eu forneci as seguintes informações ao registrar meu aplicativo:

  • Identificador do aplicativo: dr-yang-tt.appspot.com

    Escolha seu próprio identificador exclusivo.

  • Título do aplicativo: DR YANG's Twitter Client
  • Opções de autenticação: clique no link Edit , selecione Restricted to the following Google Apps domain e deixe a caixa vazia.

    Por padrão, seu site está aberto a todos os usuários de conta Google, mas aqui a configuração acima permite que todos acessem seu site (usuários de conta Google e usuários de conta não Google).


Registre seu aplicativo da Web no Twitter

Se você tiver acompanhado a duas primeiras partes desta série, poderá registrar um novo aplicativo ou modificar um aplicativo registrado existente com o Twitter. O aplicativo de exemplo foi registrado, como mostrado abaixo, como um novo aplicativo emhttp://twitter.com/oauth_clients.

  • Nome do aplicativo Dr Yang's Tt Web Client
  • Descrição: Um Web client Twitter em execução dentro do Google app engine
  • Web site do aplicativo: http://dr-yang-tt.appspot.com/twitterwebclient
  • Tipo de aplicativo: navegador
  • URL de retorno: http://dr-yang-tt.appspot.com/twitterwebclient

    Certifique-se de definir a URL de retorno correta; não é preciso usar a função de customização de URL de retorno descrita naParte 2.

  • Tipo de acesso padrão: leitura & gravação

    Você quer conceder acesso de gravação aos usuários.

  • Usar Twitter para login: Não

Assim que tiver registrado o seu aplicativo com êxito, você obterá uma chave do consumidor, um segredo do consumidor e três URLs (URL de token de solicitação, URL de token de acesso e URL de autorização). A chave do consumidor e o segredo do consumidor serão definidos em WEB-INF/web.xml.


Desenvolver e testar o cliente Twitter no GAE

Conforme já mencionado, o exemplo usa Google Plugin para Eclipse para desenvolvimento. No momento da redação deste artigo, três versões do Eclipse são suportadas: 3.5 (Galileo), 3.4 (Ganymede) e 3.3 (Europa). O exemplo foi desenvolvido em uma máquina com Eclipse 3.5, portanto, o Google Plugin para Eclipse 3.5 foi usado para instalar o plug-in. A sugestão é instalar tudo fornecido pelo plug-in para que os desenvolvimentos em GAE e GWT sejam suportados. Quando o plug-in estiver instalado, siga do guia "Iniciação rápida" para saber como desenvolver seu aplicativo da Web Hello World e implementá-lo no GAE. (O fornecimento de um guia passo a passo está fora do escopo deste artigo.)

Após criar um projeto de aplicativo da Web no Eclipse, alguns modelos serão criados pelo Google Plugin. É possível trabalhar nesse projeto base para adicionar o código de exemplo. A Figura 1 mostra os arquivos no projeto TwitterWebClient1. Uma explicação dos arquivos é apresentada após aFigura 1.

Quando o projeto foi criado, o GWT não tinha sido escolhido. Ative o GWT caso esteja familiarizado com ele. O GWT permite desenvolver aplicativos Ajax usando programação estilo Java Swing.


Figura 1. Projeto GAE TwitterWebClient1 no Eclipse

src/logging.properties
Arquivo de configuração de criação de log Java. Pode ser mais fácil de usar em comparação com Log4J no GAE.
src/dryang/twitterwebclient/IdAndAccessToken.java
Classe de dados de entidade para Java Persistence API (JPA)
src/dryang/twitterwebclient/JpaUtil.java
Classe de utilitário JPA
src/dryang/twitterwebclient/TwitterStatus.java
Classe que representa uma linha do tempo do Twitter
src/dryang/twitterwebclient/TwitterWebClientServlet.java
O controlador principal do aplicativo, responsável pela autenticação de OAuth e pelas interações do usuário
src/META-INF/jdoconfig.xml
Arquivo de configuração Java Data Object (JDO). O exemplo não o utiliza.
war/error.jsp
Página JSP para manipular exceções
war/Gnome-Edit-Delete-32.png
Ícone de exclusão
war/index.html
Página de boas-vindas, que automaticamente redireciona o navegador do usuário para o nosso cliente Twitter
war/login_twitter.html
Página de login
war/twitter_button_5_hi.gif
Imagem do botão Sign-in
war/update_twitter_status.jsp
Página JSP para exibir as informações de Twitter do usuário
war/WEB-INF/appengine-web.xml
Arquivo de configuração da Web do GAE
war/WEB-INF/web.xml
Arquivo de configuração da Web padrão

Antes de compilar e implementar o código de origem no GAE:

  1. Não se esqueça de definir sua própria chave e seu próprio segredo de consumidor em web.xml.
  2. É necessário também colocar twitter4j-2.0.9.jar em war/WEB-INF/lib.

    Twitter4J é uma biblioteca Java de software livre para TwitterAPI (consulte Recursos ).

  3. Adicione o arquivo JAR manualmente no caminho de desenvolvimento do seu projeto.

O núcleo do código, o servlet TwitterWebClient , é muito similar a MyTwitterServlet na Parte 2 desta série. Entretanto, há algumas diferenças, conforme segue:

  • O sistema de criação de log Java foi adotado porque não é fácil executar o trabalho Log4J com o GAE.
    O GAE não suporta sessões HTTP por padrão. É preciso habilitá-lo em war/WEB-INF/appengine-web.xml adicionando:

    <sessions-enabled>true</sessions-enabled>

  • O objeto Twitter não é mais armazenado na sessão HTTP devido a problemas de serialização. Como deve ser de seu conhecimento, o GAE é um ambiente em cluster dinâmico. Tudo o que você armazena na sessão HTTP deve implementar a interface java.io.Serializable , como o exemplo faz com a classe TwitterStatus . Para resolver esse problema, o exemplo armazena o token de acesso na sessão de que um objeto do Twitter pode ser criado e autenticado.
  • O token de acesso do usuário não é mais salvo em arquivo de texto simples, mas no armazenamento de dados do GAE, que é diferente de um banco de dados tradicional. Felizmente, ele suporta JDO e JPA. O exemplo usa JPA. A documentação do Google, "Usando JPA com App Engine," fornece instruções.

    Em geral, configure JPA em persistence.xml. Crie classes de dados e uma classe de utilitário para obter uma instância EntityManager . Neste aplicativo da Web, a classe de dados é dryang.twitterwebclient.IdAndAccessToken e tem três campos: id, tokene tokenSecret. Consulte a Listagem 1. Você verá o prefixo "$" para o ID do Twitter do usuário nos métodos storeAccessToken(...) e loadAccessToken(...) do servlet TwitterWebClient . Isso acontece porque id está definido como java.lang.String, enquanto o ID do Twitter é um inteiro. O armazenamento de dados do GAE não aceita um ID desse tipo como cadeia de caractere.


Listagem 1. Classe de dados JPA dryang.twitterwebclient.IdAndAccessToken

@Entity
public class IdAndAccessToken {
	@Id
	private String id;
	private String token;
	private String tokenSecret;

	public IdAndAccessToken() {
	}

	public IdAndAccessToken(String id, String token, String tokenSecret) {
		this.id = id;
		this.token = token;
		this.tokenSecret = tokenSecret;
	}

	// Getters and setters
	......
}

Após você finalizar todo o trabalho de desenvolvimento:

  1. Clique com o botão direito do mouse no projeto no Eclipse e selecione Google --> App Engine Settings....

    Você deverá ver uma janela pop-up similar à Figura 2 abaixo.

  2. Forneça o ID do aplicativo correto (no exemplo, dr-yang-tt).
  3. Clique com o botão direito do mouse no projeto no Eclipse novamente e selecione Google --> Deploy to App Engine.

Seu aplicativo deverá ser implementado no GAE com êxito em pouco tempo.


Figura 2. Configurações do GAE no Eclipse

O GAE fornece uma interface de gerenciamento. Faça login na interface com a sua conta Google; você verá uma lista dos seus aplicativos. Figura 3 mostra um exemplo do aplicativo dr-yang-tt. Você verá que o link Logs é uma ferramenta muito útil para depurar o aplicativo.

Lembre-se do limite que o Twitter impõe a chamadas API. Quando o seu aplicativo entrar em produção, será possível solicitar mais acesso no Twitter. E com mais usuários sendo atraídos para o seu site, será preciso até mesmo adquirir mais tempo de CPU e espaço de armazenamento de dados do Google.


Figure 3. Interface de gerenciamento do GAE de dr-yang-tt

Figura 4 mostra o aplicativo em execução no GAE.


Figura 4. Cliente Twitter habilitado para OAuth no GAE


Resumo

Nesta série, você conheceu mais sobre o protocolo OAuth desenvolvendo um cliente Twitter desktop. Em seguida, você desenvolveu um Web client Twitter, que mostra como OAuth funciona perfeitamente com navegadores da Web. Este último artigo da série mostrou como implementar o Web client Twitter para o Google App Engine. Agora, é possível usar OAuth para acessar sites de rede social. Com OAuth, as credenciais dos usuários são protegidas enquanto compartilham recursos protegidos entre Web sites diferentes.



Download

DescriçãoNomeTamanhoMétodo de download
Sample code for this articleoauth-part3-source-code.zip35KBHTTP

Informações sobre métodos de download


Recursos

Aprender

Obter produtos e tecnologias

Discutir

Sobre o autor

Xiaobo Yang

Xiaobo Yang é desenvolvedor de Java corporativo e trabalha no Reino Unido. Possui interesse em Enterprise Information Systems, em particular, portais corporativos. Xiaobo é PhD em engenharia aeroespacial pela Universidade de Glasgow.

Ajuda para Relatar Abuso

Relatar abuso

Obrigado. Esta entrada foi sinalizada para atenção do moderador.


Ajuda para Relatar Abuso

Relatar abuso

Falha no envio do Relatório de abuso. Tente novamente mais tarde.


developerWorks: Registre-se


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Selecione seu nome de exibição

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

(Deve possuir de 3 a 31 caracteres.)


Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Classificar este artigo

Comentários

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Tecnologia Java
ArticleID=648508
ArticleTitle=Acessando Web sites de Rede Social Através de OAuth, Parte 3: Implementar o Cliente Web Twitter no Google App Engine
publish-date=05172011
author1-email=x.yang@dl.ac.uk
author1-email-cc=

Conheça a IBM da sua cidade

Virtual Branch Office Brasil

A IBM está mais perto do que você imagina!


Tags

Help
Use o campo de pesquisa para encontrar todos os tipos de conteúdo no My developerWorks com essa tag.

Use a barra de rolagem para ver mais ou menos tags.

Tags populares mostra as principais tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Minhas tags mostra suas tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Use o campo de pesquisa para localizar todos os tipos de conteúdo no Meu developerWorks com essa tag. Tags populares mostra as tags principais para essa zona de conteúdo particular (por exemplo, tecnologia Java, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere). Minhas tags mostra as suas tags para essa zona de conteúdo em particular (por exemplo, tecnologia Java, Linux, WebSphere).