My favorites | Português | Sign in

Visão geral da API das Contas do Google em Java

Os aplicativos do Google App Engine podem autenticar usuários através das Contas do Google. Um aplicativo pode detectar se o usuário atual fez login com uma Conta do Google, e pode redirecioná-lo para a página de login das Contas do Google para que ele possa fazer login ou criar uma nova conta. Enquanto um usuário estiver conectado, o aplicativo pode acessar o endereço de e-mail do usuário. O aplicativo também pode detectar se o usuário atual é um administrador, facilitando a implementação de áreas do aplicativo restritas aos administradores.

A integração das Contas do Google é um recurso opcional do Google App Engine. Se você não quiser integrar o seu aplicativo com as Contas do Google, poderá sempre construir o seu próprio sistema para autenticação do usuário. As Contas do Google oferecem um mecanismo de autenticação robusto e fácil de usar com um conjunto de recursos bem desenvolvido e milhões de usuários ativos.

Como usar as Contas do Google em Java

Você pode testar se o usuário fez login com uma Conta do Google e obter o endereço de e-mail do usuário usando a API servlet padrão, com o método getUserPrincipal() do objeto de solicitação. Use a API de serviço de usuários para gerar URLs de login e saída.

import java.io.IOException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;

public class MyServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws IOException {
        UserService userService = UserServiceFactory.getUserService();

        String thisURL = request.getRequestURI();
        if (request.getUserPrincipal() != null) {
            response.getWriter().println("<p>Hello, " +
                                         request.getUserPrincipal().getName() +
                                         "!  You can <a href=\"" +
                                         userService.createLogoutURL(thisURL) +
                                         "\">sign out</a>.</p>");
        } else {
            response.getWriter().println("<p>Please <a href=\"" +
                                         userService.createLoginURL(thisURL) +
                                         "\">sign in</a>.</p>");
        }
    }
}

A API de serviço de usuários pode retornar as informações atuais do usuário como um objeto User. Os objetos User podem ser armazenados como valor de propriedade no armazenamento de dados.

Como impor o login e o acesso do administrador com web.xml

Se você tiver páginas que o usuário não pode acessar a menos que tenha feito login, estabeleça uma restrição de segurança para essas páginas no descritor de implementação (o arquivo web.xml). Se um usuário acessar um URL com uma restrição de segurança e não tiver feito login, o Google App Engine o redirecionará para a página de login das Contas do Google e, em seguida, o direcionará de volta ao URL, depois de ter feito login ou se registrado com êxito.

Uma restrição de segurança também pode solicitar que o usuário seja um administrador registrado do aplicativo. Isso facilita a implementação de seções do site exclusivas para administradores, sem ter que implementar um mecanismo separado de autorização.

Para aprender a definir restrições de segurança para URLs, consulte O descritor de implementação: segurança e autenticação.

Login e saída

Um aplicativo pode detectar se um usuário fez login no aplicativo com uma Conta do Google. Se o usuário não tiver feito login, o aplicativo poderá redirecioná-lo às Contas do Google para que ele faça login ou crie uma nova conta do Google. O aplicativo obtém o URL da tela de login das Contas do Google chamando um método da API de usuários. O aplicativo pode exibir esse URL como um link ou pode emitir um redirecionamento de HTTP para o URL quando o usuário visita uma página que exige autenticação.

A tela de login das Contas do Google informa ao usuário que ele está fazendo login no seu aplicativo, usando o nome do aplicativo escolhido por você ao registrá-lo. Você pode alterar o nome do seu aplicativo na seção "Application Settings" (Configurações do aplicativo) do Console de administração.

Após o usuário fazer login ou criar uma conta do Google, ele é redirecionado novamente ao seu aplicativo. O aplicativo fornece o URL de redirecionamento ao método que gera o URL de entrada.

A API de usuários também inclui um método para gerar um URL para sair do aplicativo. O URL de saída cancela a autenticação do usuário no aplicativo e o redireciona novamente ao URL do aplicativo sem exibir nada.

Um usuário não é conectado a um aplicativo até que receba uma solicitação para fazer isso e insira o endereço de e-mail e senha da sua conta. Isso é válido mesmo se o usuário tiver feito login em outros aplicativos usando a sua Conta do Google.

Acesso às informações da conta

Quando um usuário faz login em um aplicativo, esse aplicativo pode acessar o endereço de e-mail da conta para toda solicitação feita pelo usuário para o aplicativo.

O aplicativo também pode determinar se o usuário atual é um administrador (um "desenvolvedor") do aplicativo. Você pode usar esse recurso para construir recursos administrativos para o aplicativo, mesmo se não usar as Contas do Google para autenticar outros usuários. As APIs em Java e em Python facilitam a configuração de URLs "apenas para administrador".

Usuários e o armazenamento de dados

O armazenamento de dados do Google App Engine suporta o armazenamento do objeto User retornado pela API das Contas do Google como um tipo de valor especial. Desde que este documento foi escrito, os valores de User não se comportam como identificadores estáveis para usuários: se um aplicativo armazena um valor User e o usuário altera o seu endereço de e-mail, o valor User não fará mais referência a um usuário válido. Na prática, os usuários raramente alteram seus endereços de e-mail da Conta do Google, mas é melhor se preparar para esse caso raro. Há a possibilidade de uma futura atualização no serviço atualizar automaticamente os valores de User no armazenamento de dados. Até lá, o melhor é não depender do valor User para obter estabilidade.

A API em Java não expõe no momento um ID de usuário exclusivo além do endereço de e-mail.

Contas do Google e o servidor de desenvolvimento

O servidor de desenvolvimento simula o sistema das Contas do Google usando uma tela de login fictícia. Quando o seu aplicativo chama a API de usuários para obter o URL da tela de login, a API retorna um URL especial do servidor de desenvolvimento que solicita um endereço de e-mail, mas não uma senha. Você pode digitar qualquer endereço de e-mail nessa solicitação e o aplicativo se comportará como se você tivesse feito login com uma conta com esse endereço.

A tela de login fictícia também inclui uma caixa de seleção que indica se a conta fictícia é de um administrador. Se você marcar essa caixa de seleção, o aplicativo se comportará como se você tivesse feito login usando uma conta de administrador.

Da mesma forma, a API de usuários retorna um URL de saída que cancela o login fictício.