My favorites | 中文(简体) | Sign in

使用用户服务

Google App Engine 提供基于 Google 基础架构的多种有用服务,可由使用 SDK 随附的库的应用程序访问。其中一种服务是用户服务,可使应用程序与 Google 用户帐户集成。使用用户服务,用户可以使用已有的 Google 帐户登录到您的应用程序。

我们来使用用户服务个性化此应用程序的问候语。

使用 User

再次编辑 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 对象。

当应用程序在 App Engine 上运行时,用户会被定向到 Google 帐户登录页面,然后在成功登录或创建帐户后重定向到应用程序。

用户 API

我们来仔细了解一下用户 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 帐户登录屏幕。这种重新定位包括本页面的网址 (self.request.uri),因此用户登录或注册了新帐户后,Google 帐户登录机制会引导用户返回到此处。

有关用户 API 的详细信息,请参阅用户参考

下一步...

我们的应用程序现在可以按名称问候访问用户。我们来添加一项功能以使用户可以相互问候。

继续转至使用 webapp 处理表单