My favorites | 中文(繁體) | Sign in
英文版或許有比此中譯版新的內容

運用使用者服務

「Google 應用服務引擎」根據 Google 基礎架構,提供幾種好用的服務,使用 SDK 中所含之程式庫的應用程式可以進行存取。 其中的一項服務為「使用者」服務,它可以讓您的應用程式與 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,而且您的開發伺服器是在除錯器上執行,則當您將變更儲存至這個檔案時,Eclipse 會自動編譯新的程式碼,然後嘗試在已執行的伺服器上插入新的程式碼。執行中的伺服器會立即反映類別、JSP、靜態檔案和 appengine-web.xml 的變更,不需重新啟動。如果您變更了 web.xml 或其他設定檔,您必須先停止再啟動伺服器,才能看到變更。

如果您使用的是 Ant,您必須停止伺服器並重新建置專案,才能看到原始程式碼的變更。JSP 和靜態檔案的變更不需要重新啟動伺服器。

需要的話,請重新建置您的專案並重新啟動伺服器。使用您的瀏覽器開啟下列 servlet URL,以測試應用程式:

伺服器不會顯示訊息,反之,它會提示您輸入電子郵件地址。請輸入任何電子郵件地址 (例如 alfred@example.com),然後按一下 [Log In] (登入)。應用程式隨即顯示訊息,這次會包括您所輸入的電子郵件地址。

GuestbookServlet 類別的新程式碼會透過 Users API (使用者 API) 檢查使用者是不是使用「Google 帳戶」登入。如果不是,它會將使用者重新導向「Google 帳戶」登入畫面。userService.createLoginURL(...) 會傳回登入畫面的 URL。登入機制會透過傳送給 createLoginURL(...) 的 URL,將使用者重新導向應用程式,而在這個範例中,即為目前頁面的 URL。

開發伺服器知道如何模擬「Google 帳戶」登入機制。如果是在本機機器上執行,重新導向將前往可輸入任何電子郵件地址的頁面來模擬帳戶登入。如果是在「應用服務引擎」上執行,重新導向將前往實際的「Google 帳戶」畫面。

現在您已登入,可以測試應用程式了。如果重新載入頁面,訊息會再次顯示。

如要讓使用者登出,請提供由 createLogoutURL() 方法所產生的登出畫面連結。請注意,透過登出連結,使用者將登出所有 Google 服務。

接下來...

現在我們已瞭解如何識別使用者,可以開始邀請使用者到訪客留言板張貼訊息。讓我們使用 JavaServer Page (JSP) 設計這個應用程式的使用者介面。

繼續瀏覽「使用 JSP」一節。