Избранное | Русский | Войти

Использование службы Users

Google App Engine предоставляет несколько полезных служб на основе инфраструктуры Google, которые доступны приложениям, использующим библиотеки, включенные в SDK. Одна из них – служба Users, позволяющая интегрировать приложение с аккаунтами пользователей Google. С помощью этой службы пользователи смогут применять для входа в ваше приложение свои аккаунты Google.

Воспользуемся службой Users для персонификации этого приложения приветствия.

Использование службы Users

Измените src/guestbook/GuestbookServlet.java указанным образом, чтобы он выглядел так:

package guestbook;

import java.io.IOException;
import javax.servlet.http.*;
import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;

public class GuestbookServlet extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
              throws IOException {
        UserService userService = UserServiceFactory.getUserService();
        User user = userService.getCurrentUser();

        if (user != null) {
            resp.setContentType("text/plain");
            resp.getWriter().println("Hello, " + user.getNickname());
        } else {
            resp.sendRedirect(userService.createLoginURL(req.getRequestURI()));
        }
    }
}

При использовании Eclipse, если сервер разработки выполняется в отладчике, при сохранении изменений в этом файле Eclipse автоматически компилирует новый код и пытается его вставить на работающий сервер. Изменения в классах, страницах JSP, статических файлах и файле appengine-web.xml незамедлительно отражаются на работающем сервере и не требуют его перезапуска. При изменении файла web.xml или других файлов конфигурации необходимо перезапустить сервер, чтобы изменения вступили в силу.

При использовании Ant для этого нужно остановить сервер и заново собрать проект. Изменения в страницах JSP и статических файлах не требуют перезапуска сервера.

Снова соберите проект и при необходимости перезапустите сервер. Протестируйте приложение, открыв следующий URL сервлета в браузере:

Вместо показа сообщения сервер попросит ввести адрес электронной почты. Введите любой адрес электронной почты (такой как alfred@example.com) и нажмите "Войти". Приложение покажет сообщение с введенным адресом электронной почты.

Чтобы проверить, выполнил ли пользователь вход с помощью аккаунта Google, в новом коде класса GuestbookServlet используется API пользователей. Если вход не выполнен, пользователь перенаправляется на страницу входа Аккаунтов Google. Метод userService.createLoginURL(...) возвращает URL страницы входа. Средство выполнения входа перенаправляет пользователя по URL, переданному в методе createLoginURL(...), который в данном случае совпадает с текущей страницей.

Сервер разработки имитирует систему Аккаунтов Google для выполнения входа. При выполнении на локальном компьютере перенаправление осуществляется на страницу, где можно ввести адрес электронной почты, чтобы сымитировать выполнение входа с помощью аккаунта. При выполнении на App Engine перенаправление выполняется на действующую страницу Аккаунтов Google.

Теперь выполнен вход в тестовое приложение. При перезагрузке страницы сообщение появится снова.

Чтобы позволить пользователю выполнить выход, добавьте ссылку на страницу выполнения выхода, создаваемую методом createLogoutURL(). Обратите внимание, что, нажав на эту ссылку, пользователь выполнит выход из всех служб Google.

Далее...

Теперь, когда мы знаем об идентификации пользователей, можно попросить их оставить сообщения в гостевой книге. Давайте создадим пользовательский интерфейс для этого приложения с помощью страниц JavaServer Pages (JSP).

Переходите к разделу Использование шаблонов.