『CakePHP』で読んだ本メモを作る 〜1〜 はてな認証を使う
『CakePHP』の基本的な部分はなんとなく理解してきたので、慣れていくために簡単なものを作ってみることに。
読んだ本を記録していくWebアプリを作る。
はてな認証apiの設定
まずは、はてな認証apiの説明を読む。
なんとなく動作は理解できた。
登録画面で、いろいろと設定項目を登録する。
コールバックURLっていうのがよくわからなかったけど、
はてな認証が返してきたデータを受け取るURLということでいいのかな。
ログイン用コントローラを作る
以下で提供されている PHP 用のライブラリを使わせてもらいました。
『Services_JSON』が必要とのことなので以下からダウンロード。
『Hatena_API_Auth.php』と『JSON.php』を『vendors』ディレクトリにおいて、vendor()で呼び出して使う。
ただ、使うにあたって検索していたら、今後はvendor()が今後は使えなくなるという情報が掲載されていた。
いろいろと変わっていくなあ。とりあえず、今回は使ってしまう方向で。
共通で使う値を define する場所
APIキーと秘密鍵をどこかに define しておきたいのだけど、こういうのはどのファイルに書いておくのが正しいのだろうか?
わからなかったら検索、ということで調べていたら以下のサイトに説明があった。
- CakePHP/defineはどこですればよい?
app/config/bootstrap.phpが初期化の最後に呼ばれるので、この中でごにょごにょするのがよいっぽいです。
なるほど。とりあえずここで define してしまう。
そしてコントローラ。
- APP/controllers/login_controller.php
<?php vendor('Json'); vendor('Hatena_API_Auth'); class LoginController extends AppController { var $name = 'Login'; var $uses = null; function index() { $hatena = new Hatena_API_Auth(HATENA_API_KEY, HATENA_SECRET_KEY); $login_uri = $hatena->uri_to_login(); $this->set('login_uri', $login_uri); } function hatena() { $hatena = new Hatena_API_Auth(HATENA_API_KEY, HATENA_SECRET_KEY); $user = $hatena->login($this->params['url']['cert']); if($user) { $data = array( 'name' => $user->name, 'image' => $user->thumbnail_url ); $this->Session->write('user', $data); } $this->redirect(FULL_BASE_URL); exit; } } ?>
ここからはてなの認証サーバーにアクセスすると、認証の結果が以下のURLに返る。
認証が正しく行われたら、hatenaアクションの中でセッションにデータを保存してトップページにリダイレクトすることにしてみた。
ログイン用view
- APP/views/login/index.thtml
<h3>ログイン</h3> <p>データを登録するにはてな認証を使ってログインする必要があります。</p> <ul> <li><?php echo $html->link('はてなアカウントでログイン', $login_uri)?> </ul> <h3>はてなアカウント取得</h3> はてなアカウントの取得は以下のページからどうぞ。 <ul> <li><?php echo $html->link('はてなアカウントを取得', 'https://www.hatena.ne.jp/register')?> </ul>
とりあえずこんなかんじで。
これでログインはできるようになった!
ログアウト コントローラ
ログアウトもできるように。
<?php class LogoutController extends AppController { var $name = 'Logout'; var $uses = null; function index() { $this->Session->destroy(); $this->redirect(FULL_BASE_URL); exit; } } ?>