본문 바로가기

기술자료/Web

[Google Apps Engine] Users Service 사용하기.


원본글 : http://code.google.com/appengine/docs/java/gettingstarted/usingusers.html


Google App Engine에서는 Google 인프라 스트럭처를 활용한 몇몇 유용한 서비스를 제공합니다.

이 서비스들은 SDK에 포함된 라이브러리를 이용하여 응용 프로그램에서 접근 가능합니다.

Users Service와 같은 서비스는 Google 사용자 계정과 통합되어 여러분들의 응용 프로그램에서 활용할 수 있습니다. 그래서 응용 프로그램 내에 Google 계정을 이용해 가입된 사용자들의 정보를 활용할 수 있습니다.

이제부터 Users service를 이용하여, 개별 사용자 별로 인사말이 표시되게 끔 하는 방법을 구현하려 합니다.


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 및 기타 설정 파일에 대해 설정한 내용은 반드시 서버를 재 시작 해야 합니다.

메시지를 표시하는 대신 서버에서 이메일을 표시하도록 합니다.
아무 이메일 주소(
alfred@example.com 등등)을 받고 “Log in”을 클릭합니다.
응용 프로그램에서는 메시지를 표시하게 되는데, 이 때, 여러분이 입력한 이메일 주소를 담게 됩니다.

GuestbookServlet 클래스에 대한 새로운 코드에서는
사용자가 Google Account에 가입되어 있는지를 확인하기 위해 Users API를 사용하게 됩니다.
만일 없다면, 사용자는 Google Account 가입 화면으로 리다이렉트 하게 됩니다. userService.createLoginURL(…)에서는 가입 화면으로 가는 URL을 돌려줍니다.
현재 페이지의 URL을 createLoginURL()에 넘겨 줌으로써
URL 별로 응용 프로그램이 다르더라도 적절한 URL로 리다이트렉트 하는데 상당히 편리합니다.

개발 서버는 Google Accouns의 가입 처리를 어떻게 적절히 맞추어 나타낼지 알고 있습니다.
여러분의 PC에서는 입력 받은 이메일 계정으로 가입 처리할 수 있도록, 가입 처리용 페이지로 이동하게 됩니다.

실제 App Engine 환경에서는 진짜 가압에 사용되는 곳으로 이동하게 됩니다.
즉  실제 Google Account 관리화면으로 넘어가게 됩니다.

테스트 응용 프로그램 상에서 가입이 되었다면 다시 한번 페이지를 불러 화면을 다시 표시해보도록 하세요.

사용자 로그 아웃 처리를 하려면, 이번에는 로그아웃 화면에 대한 링크를 제공해야 합니다.
이 링크는 createLogoutURL() 메소드로 생성됩니다.
참고로 로그 아웃 링크는 현재 사용자가 로그인 했던 모든 구글 서비스에 대해서 로그아웃 처리됩니다.


다음은…

이제 사용자의 정보를 어떻게 가져오는지 알았기 때문에,
방명록 상에 메시지를 게시할 사용자들을 초대할 수 있습니다.

이번에는 JavaServer Pages(JSP)를 사용하여

이 응용 프로그램에 대한 사용자 인터페이스를 설계하도록 하도록 하겠습니다.

JSP 사용하기 에서 계속됩니다.