お気に入り | 日本語 | ログイン

ユーザー サービスの使用

Google App Engine には、Google インフラをベースとした各種サービスが用意されています。これらには、SDK に含まれるライブラリを使用してアプリケーションからアクセスできます。サービスの 1 つであるユーザー サービスは、アプリケーションと Google ユーザー アカウントを連携させるものです。ユーザー サービスでは、ユーザーはすでに持っている Google アカウントを通じて、アプリケーションにログインすることができます。

ユーザー サービスを使って、アプリケーションのグリーティング メッセージをカスタマイズしてみましょう。

ユーザーの使用

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 を使用し、開発サーバーをデバッガ内で実行している場合は、このファイルに変更を加えて保存すると、新しいコードが自動的にコンパイルされて実行中のサーバーに挿入されます。クラス、JSP、静的ファイル、および appengine-web.xml に加えた変更は、実行中のサーバーにすぐに反映されます。再起動は必要ありません。web.xml などの設定ファイルを変更した場合は、変更を反映するためにサーバーを停止して起動する必要があります。

Ant を使用している場合は、ソース コードに加えた変更を有効にするには、サーバーを停止してプロジェクトをビルドし直さなければなりません。JSP や静的ファイルを変更した場合は、サーバーを再起動する必要はありません。

必要に応じ、プロジェクトをビルドし直してサーバーを再起動します。アプリケーションをテストするため、ブラウザで次のサーブレット URL にアクセスします:

メッセージは表示されませんが、代わりにメール アドレスを入力するためのフィールドが表示されます。メール アドレス(たとえば alfred@example.com)を入力して [ログイン] をクリックします。今回は、入力したメール アドレスを含んだメッセージが表示されます。

GuestbookServlet クラスの新しいコードでは、Users API を使用して、ユーザーが Google アカウントでログインしているかどうかをチェックします。ログインしていない場合、ユーザーは Google アカウントのログイン画面にリダイレクトされます。userService.createLoginURL(...) は、ログイン画面の URL を返します。ログイン画面からのユーザーのリダイレクト先は、createLoginURL(...) に渡される URL(このサンプルでは現在のページの URL)で判断されます。

開発サーバーは、Google アカウントのログイン機能をシミュレートできます。ローカル マシンで実行すると、アカウントへのログインがシミュレートされるため、メール アドレスを入力するためのページにリダイレクトされます。App Engine で実行すると、実際の Google アカウント画面にリダイレクトされます。

この時点では、すでにテスト アプリケーションにログインしています。ページをリロードすると、メッセージが再び表示されます。

ユーザーがログアウトできるようにするには、createLogoutURL() メソッドで生成したログアウト画面へのリンクを表示します。なお、ユーザーがログアウト リンクをクリックすると、すべての Google サービスからログアウトすることになります。

次のステップ

これで、アクセスしてきたユーザーを識別できるようになりました。次は、ユーザーがゲストブックにメッセージを投稿できるようにしましょう。次のセクションでは、JSP(JavaServer Pages)を使用して、このアプリケーションのユーザー インターフェースを設計します。

JSP の使用に進みます。