サイトのトップへ戻る

Google App Engine ドキュメント日本語訳

Users サービスを使用する

Google App Engine では、Google インフラ上のいくつかの便利なサービスを使用できます。 このサービスにはApp Engine Python SDKを含むライブラリを使用したアプリケーションからアクセスできます。 そのようなサービスの一つにUsers サービスがあります。これを使うと、あなたのアプリケーションと Google ユーザーアカウントを統合することができます。 Users サービスでは、ユーザーは既にログインしている Google アカウントをアプリケーションで使用できます。

それでは、 Users サービスを使ってアプリケーションでの挨拶をパーソナライズしてみましょう。



Usersを使用する

今回もhelloworld/helloworld.py を編集し、中身を以下のように書き換えます:

helloworld.py
View on GitHub
from google.appengine.api import users

import webapp2


class MainPage(webapp2.RequestHandler):

    def get(self):
        # Checks for active Google account session
        user = users.get_current_user()

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


app = webapp2.WSGIApplication([
    ('/', MainPage),
], debug=True)

ブラウザー上でページを再読み込みしてください。テスト用に用意されたGoogleログインページのローカルバージョンにリダイレクトされます。 この画面で任意のユーザー名を入力でき、ユーザー名に応じて仮のUserオブジェクトが表示されます。

アプリケーションがApp Engine上で動作している場合はユーザーはGoogle アカウントのログインベージに送られ、ログインもしくはアカウントの作成に成功するとアプリケーションに送り返されます。



Users API

それでは、新しく追加したコードを詳しく見てみましょう:

helloworld.py
View on GitHub
# Checks for active Google account session
user = users.get_current_user()

ユーザーが既にアプリケーションにログインしている場合は、get_current_user()はそのユーザーのUserオブジェクトを返します。 ログインしていない場合はNoneを返します。

helloworld.py
View on GitHub
if user:
    self.response.headers['Content-Type'] = 'text/html; charset=utf-8'
    self.response.write('Hello, ' + user.nickname())

ユーザーがログインしている場合は、パーソナライズされたメッセージが表示されます。このメッセージでは、ユーザーアカウントと関連のあるニックネームが使用されます。

helloworld.py
View on GitHub
else:
    self.redirect(users.create_login_url(self.request.uri))

ユーザーがログインしていない場合は、 ユーザーをGoogle アカウントログイン画面へリダイレクトするようwebapp2に指示をします。 このself.redirectにはこのページの情報(self.request.uri)も含まれているので、 ユーザーがログインしたり新規アカウント登録した後に、Google アカウントログイン側の処理機構はユーザーをアプリケーションのページへ送り返すことができます。

Users APIに関する詳細情報については、Users リファレンスを参照してください。

webapp2でフォームを処理する >>