ちょっと前にライブドア認証サービスが開始されました。私はlivedoor Readerやlivedoor Clip!を普段利用しているのでライブドアのIDでいろんなサービスを利用できると非常にありがたかったりします。
そこで、ライブドア認証をsymfonyで簡単に使うプラグインを書いてみました。
pluginsディレクトリの下にチェックアウトして利用をしてみてください。
svn co http://svn.tracfort.jp/svn/dino-symfony/plugins/sfLivedoorAuthPlugin
利用方法は以下の通りです。
livedoor Authの登録
まず、livedoor Authのサイトにてこれから作成するアプリケーションの登録をします。サイトには非常に丁寧に説明がありますのでここでの説明は省きます。
キーの設定
登録時に発行されたアプリケーションキーをapps/myapp/config/app.ymlに設定します。
all:
auth:
livedoor_app_key: "xxxxx"
livedoor_secret: "xxxxx"ライブドア認証へのリンク
ライブドア認証へのリンクは下記のようにsfLivedoorAuthプラグインが用意するurl_for_livedoor_authヘルパーを利用します。テンプレートの中で下記のように記述してください。
<?php echo link_to("ライブドア認証", url_for_livedoor_auth (sfConfig::get('app_auth_livedoor_app_key'), sfConfig::get('app_auth_livedoor_secret'), array("userdata"=>""))); ?>
コールバックURL
ライブドア認証では、認証の結果をアプリケーション登録時に設定した、コールバックURLに送信します。
まず、コールバックリクエストを受けるモジュールとアクションを作成します。モジュールの作成はいつもどおりコマンド一発です。ここでは、authモジュールとしました。
symfony init-module myapp auth
次にアクションを作成します。apps/myapp/modules/auth/actions/actions.class.phpに以下のように記述します。
class authActions extends sfActions { public function executeLivedoor(){ if($this->getRequest()->getMethod() == sfRequest::GET){ //ここにライブドア認証の結果を処理するコードを書く } } }
アプリケーションは、このコールバックURLに送られたリクエストを正しく検証なくてはなりません。sfLivedoorAuthプラグインでは、このためのValidatorとして、sfLivedoorAuthValidatorというクラスを用意しています。Validatorをapps/myapp/modules/auth/validate/livedoor.ymlに設定します。
methods: [get] fields: sig: required: msg: "required" sfLivedoorAuthValidator: validators: sfLivedoorAuthValidator: class: sfLivedoorAuthValidator
これにより、コールバックされたURLの正統性が検証されます。
最後に、auth/livedoorアクションをlivedoor Authアプリケーション登録時に設定したようにroutingを設定します。apps/myapp/config/routing.ymlに以下のような内容を記述します。
livedoor_callback: url: /auth/livedoor/callback param: { module: auth, action: livedoor}
以上でライブドア認証の実装は完了です。
利用するサイトが増えるにしたがってIDパスワードの管理が大変になり、新しく見付けたサイトでもちょっと試すためにパスワードを考えるのがとても面倒なときがあります。外部認証を効果的に組み込むことでユーザが利用サイトを利用するためのハードルが下げられると良いですね。
外部認証にはさまざまな種類がありますが、似たようなプラグインとして本家にsfOpenIDPluginがあります、こちらも是非お試しください。

