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

運用使用者服務

「Google 應用服務引擎」根據 Google 基礎架構,提供幾種好用的服務,使用 SDK 中所含之程式庫的應用程式可以進行存取。 其中的一項服務為「使用者」服務,它可以讓您的應用程式與 Google 使用者帳戶整合在一起。有了「使用者」服務,使用者便可以使用其現有的 Google 帳戶登入您的應用程式。

讓我們透過「使用者」服務,個人化應用程式的問候語。

運用使用者

再次編輯 helloworld/helloworld.py,並以下列各項取代其內容:

from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class MainPage(webapp.RequestHandler):
  def get(self):
    user = users.get_current_user()

    if user:
      self.response.headers['Content-Type'] = 'text/plain'
      self.response.out.write('Hello, ' + user.nickname())
    else:
      self.redirect(users.create_login_url(self.request.uri))

application = webapp.WSGIApplication(
                                     [('/', MainPage)],
                                     debug=True)

def main():
  run_wsgi_app(application)

if __name__ == "__main__":
  main()

在瀏覽器中重新載入頁面。 您的應用程式會將您重新導向至本機版本的 Google 登入頁面,適合您測試應用程式。您可以在此畫面中輸入要使用的任何使用者名稱,根據該使用者名稱,應用程式就會看到假的 User 物件。

若您的應用程式在「應用服務引擎」上執行,則會將使用者導向至 Google 帳戶登入頁面,並於成功登入或建立帳戶後,再重新導向回到您的應用程式。

Users API

讓我們仔細地研究一下新的內容:

user = users.get_current_user()

若使用者已經登入您的應用程式,get_current_user() 傳回使用者的 User 物件。否則,會傳回 None

if user:
  self.response.headers['Content-Type'] = 'text/plain'
  self.response.out.write('Hello, ' + user.nickname())

若使用者已登入,會顯示個人化的訊息,使用該使用者帳戶相關的暱稱。

else:
  self.redirect(users.create_login_url(self.request.uri))

若使用者尚未登入,則會告訴 webapp,將使用者的瀏覽器重新導向至 Google 帳戶登入畫面。重新導向包括此頁面的 URL (self.request.uri),所以 Google 帳戶登入機制會在使用者登入或註冊新帳戶後,將使用者送回此處。

如需進一步瞭解 Users API (使用者 API),請參閱使用者參考資料

接下來...

我們的應用程式現在可以用訪客的名稱跟他們打招呼囉!讓我們新增可以讓使用者互相打招呼的功能吧!

繼續瀏覽「以 webapp 處理表單」一節。