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

ユーザー サービスの使用

Google App Engine には、Google インフラをベースとした各種サービスが用意されています。これらには、SDK に含まれるライブラリを使用してアプリケーションからアクセスできます。サービスの 1 つであるユーザー サービスは、アプリケーションと 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 オブジェクトを認識します。

アプリケーションが App Engine 上で動作しているとき、ユーザーは 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))

ユーザーがログインしていない場合、ユーザーのブラウザを Google アカウントのログイン ページにリダイレクトするよう、webapp に指示します。リダイレクトには、このページへの URL(self.request.uri)が含まれているため、ユーザーは Google アカウント ログイン システムにより、ログインまたは新規アカウントの作成後、このページへ戻されます。

User API に関する詳しい情報は、ユーザー リファレンスをご覧ください。

次のステップ

これで、アプリケーションは、訪問者の名前に合わせてグリーティング メッセージを表示できるようになりました。次は、ユーザー同士がメッセージを交換できる機能を追加しましょう。

webapp を使ったフォームの処理に進みます。