Google Code が利用できる言語: English - Español - 日本語 - 한국어 - Português - Pусский - 中文(简体) - 中文(繁體)
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 アカウントのログイン ページにリダイレクトされ、ログインまたはアカウント作成の完了後、再びアプリケーションにリダイレクトで戻されます。
コンテンツの新しい部分を見ていきましょう。
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 を使ったフォームの処理に進みます。