Kay Framework は認証機能を提供しています
認証方法も多様で、Google アカウントを使った認証だけでなく、データストア認証*1や OpenID、さらには OAuth まで利用できます。
認証方法は Kay の認証ミドルウェア用バックエンドとして提供されています
簡単に言うと、Kay の認証機能を拡張するプラグインみたいなものです。そのため、設定をちょっと記述するだけで認証方法を変更できます。
今回は Twitter の OAuth 認証を使う方法をご紹介
Twitter に Google App Engine アプリを登録
下記のページにアクセスして、作成中(予定?)のアプリを登録します。
アプリ情報は適当な内容を入力して下さい。登録が成功すると、ConsumerKey と ConsumerKeySecret が発行されるので、メモしておきます。
settigs.py を修正
Twitter の OAuth を認証で使うように設定します。
INSTALLED_APPS = (
'core', # メインのアプリ
'kay.ext.gaema',
)
APP_MOUNT_POINTS = {
'core': '/',
}
# 認証ミドルウェアを指定して認証機能を有効にする
# セッションも有効にしておく
MIDDLEWARE_CLASSES = (
'kay.auth.middleware.AuthenticationMiddleware',
'kay.sessions.middleware.SessionMiddleware',
)
# OAuth で認証するためのバックエンドを指定
AUTH_USER_BACKEND = 'kay.auth.backends.gaema.GAEMABackend'
# OAuth で認証に使うユーザークラス
# 独自のユーザークラスを使うとき指定
# 省略すると GAEMAUser クラスが使われる
GAEMA_USER_MODEL = 'core.models.User'
# Twitter の ConsumerKey と ConsumerKeySecret を指定
GAEMA_SECRETS = {
'twitter_consumer_key': 'Twitter の ConsumerKey',
'twitter_consumer_secret': 'Twitter の ConsumerKeySecret',
}
# OAuth で使用するサービスを指定
# twitter や facebook など
# kay.ext.gaema.services に定義されている
GAEMA_VALID_SERVICES = [
'twitter',
]
ちなみに gaema は Kay に同梱されている、Google App Engine で OpenID や OAuth を使った認証を実現するためのライブラリです。
models.py を修正
settings.py の GAEMA_USER_MODEL で独自のユーザークラスを使う場合は、アプリフォルダ内の models.py に GAEMAUser 派生クラスを定義する必要があります。デフォルトのユーザークラスでいい場合は不要です。
from kay.ext.gaema.models import GAEMAUser class User(GAEMAUser): pass
Twitter アプリを作りたいとき楽ですね
Kay を使えば、面倒な Twitter の OAuth 対応が、ほんの少しのコードで実装できます。開発スピードがかなりアップするんじゃないでしょうか。認証まわりって面倒ですからね。
ただ、Twitter API を呼び出すには access_toke や access_token_secret が必要です。どこかの辞書に格納されているという話なんですが、まだ取得方法が分っていないです。これは今後の課題。
*1:ユーザー名とパスワードをアプリに登録するやつ。基本認証。