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:ユーザー名とパスワードをアプリに登録するやつ。基本認証。