2010/03/25

[Google App Engine]Googleのアカウントでログインする画面

ユーザーさんにGoogleのアカウントでログインしてもらって、そのメアドや他の情報を使ってアプリを作りたい局面があると思います。

今日は、そのやり方について。

といっても、Using Google Accounts in Pythonにちょこっと手を加えてだけなのですが。

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

class MyHandler(webapp.RequestHandler):
def get(self):
user = users.get_current_user()
if user:
greeting = ("Welcome, %s! (<a href=\"%s\">sign out</a>)" %
(user.nickname(), users.create_logout_url("/")))
else:
greeting = ("<a href=\"%s\">Sign in or register</a>." %
users.create_login_url("/"))

self.response.out.write("<html><body>%s</body></html>" % greeting)

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

def main():
run_wsgi_app(application)

if __name__ == "__main__":
main()

usersクラスをどうやって使うのかというところがキーポイント。

users.get_current_user()でログインしているかどうか確認をして、ログインしていない場合、Noneを返すのでifで処理を分岐させることができます。

ログインしている場合は、最初の分岐に入るのですが、user.nickname()でニックネームの表示を行い、users.create_logout_url("/")でログアウト先のurlリンクを作成しています。
create_logout_urlメソッドの引数はログアウトした後のリダイレクト先を設定するのですが、これについてはまた後日詳細を書きたいなと。
同様に、ログインしていない時はelseに入り、create_login_url("/")の返り値が、ログイン先のurlで、引数がリダイレクト先のURLなのですが、こちらもまた同様に後日書きたいなと。

すごくざっとですが、これでログインの画面を作ることができるのかなーっと。

0 コメント:

コメントを投稿