Google Code が利用できる言語: English - Español - 日本語 - 한국어 - Português - Pусский - 中文(简体) - 中文(繁體)
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 の使用に進みます。