gaema は元々、GoogleAppEngine用に開発されたパッケージのようだがKay用に多少手を加えてある。この kay.ext.gaema で対応しているサービスは次の5つである。
- google OpenID
- google OpenID/OAuth Hybrid
- Twitter OAuth
- Facebook Connect
- Yahoo OpenID
Kayドキュメント kay.ext.gaema
Google code - gaema
gaemaの使用について、Kayドキュメントでは @gaema_login_required を紹介している。@gaema_login_required のパラメーターには認証で使用したいソーシャルサービスを、一つもしくは複数指定できる。しかしユーザー(情報を入れる)モデルに認証した情報を登録するためには、何らかのコードを書かなければならない。つまり、認証とユーザーモデルの紐付けはできないようだ。
『通常の』ユーザー認証説明 ⇒⇒⇒ 参考: Kayドキュメント - チュートリアル
このため gaema を利用するときは、kay.auth.backends.gaema.GAEMABackend を認証バックエンドとして指定したほうが良い。この設定については、griefworkerさんのサイトで説明されているようなので参照して欲しい。
参考: present - Kay Framework で認証に Twitter の OAuth を使う方法
バックエンドで指定する GAEMABackend では、通常の認証で使用する @login_required を利用できる。このためGoogleアカウント認証のみ対応していたいアプリケーションを、設定変更だけで他のソーシャルサービスにも対応させることが可能だ。
もし、GAEMA_VALID_SERVICES に複数のサービスを指定した場合、select_service.html が表示されサービスの選択を促すようになっている。
Twitter OAuth と Facebook Connect (GoogleMarketplaceも?)は、key と secret を取得して、GAEMA_SECRETS に次のように設定する必要がある。
GAEMA_SECRETS = { "twitter_consumer_key": "xxxxxxxxxxxxxxxxxx", "twitter_consumer_secret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "facebook_api_key": "xxxxxxxxxxxxxxxx", "facebook_secret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", }コードの取得は次のサイトから、
twitter developers アプリケーションの登録申請
facebook developers - register your website
gaema は OpenID, OAuth, FacebookConnect と3つのプロトコルに対応しているのが素晴らしい。
ただ、対応するプロバイダーが限られるのと、パッケージ内部が複雑でサービスの追加やUIの変更は難しそうである。また、GoogleAppEngine上でOpenID認証がサポートされるようになり、今後どうなるかは分からない。