Hatena::ブログ(Diary)

BUENA VISTA SOCIAL BLOG このページをアンテナに追加 RSSフィード Twitter

2009年11月23日

[][]CakePHPTwitterマッシュアップを作る#4

目標

すべてのページに「twitterログイン」を用意してOAuthにより認証できるようにする

使ったもの

http://code.42dh.com/oauth/

からOAuth consumer componentをダウンロード

解凍すると

  • controllers
    • conponents
      • oauth_consumers
        • abstract_consumer.php
      • oauth_consumer.php
  • vendors

が入っています。

app/vendorsに

OAuthフォルダを入れる

app/controllers/conponentsに

oauth_consumersフォルダ、oauth_consumer.phpを入れて準備完了

Twitterのキー

第2回で作成した

  • コンシューマキー
  • シークレットキー

を、app/controllers/components/oauth_consumers/twitter_consumer.phpを作成し

class TwitterConsumer extends AbstractConsumer {
    public function __construct() {
	parent::__construct('YOUR_CONSUMER_KEY', 'YOUR_CONSUMER_SECRET');
    }
}

と、記述

twitter連携用コントローラの作成

twitter_controller.phpをapp/controllers下に作成し

class TwitterController extends AppController {
    public $uses = array('User');
    public $components = array('OauthConsumer'); <--これ重要(oauthコンポーネントの呼び出し)

    public function twitter() {
        $requestToken = $this->OauthConsumer->getRequestToken('Twitter', 'http://twitter.com/oauth/request_token', 'http://localhost/twitter/twitter_callback'); <--コールバックしてもらうURLを指定、ローカルでもOK。今回はローカルテストのため
        $this->Session->write('twitter_request_token', $requestToken);
        $this->redirect('http://twitter.com/oauth/authorize?oauth_token=' . $requestToken->key);
    }

    public function twitter_callback() {
        if (!empty($this->params['url']['denied']))
        {
          $this->Session->setFlash('拒否されました');
          $this->redirect('/');
        }
        $requestToken = $this->Session->read('twitter_request_token');
        $accessToken = $this->OauthConsumer->getAccessToken('Twitter', 'http://twitter.com/oauth/access_token', $requestToken);
        if (empty($accessToken)) $this->redirect('/');
        $json = $this->OauthConsumer->get('Twitter', $accessToken->key, $accessToken->secret, 'http://twitter.com/account/verify_credentials.json', array()); <--認証ユーザ情報の取得
        $this->Session->setFlash('認証OK');
        //ユーザ情報を登録
/***** ここで受け取ったjsonの情報をDBに入れるなりごにょごにょ  ******/
        $this->User->create();
        $this->User->save(json_decode($json, true));
/***** ポストするときとかは以下な感じ *****/
        $this->OauthConsumer->post('Twitter', $accessToken->key, $accessToken->secret, 'http://twitter.com/statuses/update.json', array('status' => '私がムスカ大佐だ。'));
        $this->redirect('/');
    }
}

とりあえずTwitterOAuthの準備は整った。

後はビュー

app/views/layouts/default.ctpに

<?php echo $html->link("ついったログイン", "/twitter/twitter"); ?>

とか書いておけばOK

twitterコントローラでユーザ情報をセッション/DBに入れるなり、アクセストークンをセッション/DBに入れるなりはご自由に

でもセキュリティ的にトークンをセッションはまずいかも。

[]白菜のミルク煮

今回は旬の激安白菜を使って、僕の冬の定番料理「白菜のミルク煮」を

材料

白菜4分の1

ベーコン3枚

にんにく1かけ

塩・コショウ

牛乳3カップくらい

固形コンソメ1個〜1.5個

片栗粉

オリーブオイル

まずは

白菜を適当に切ります

f:id:hagimi:20091117214811j:image

こんな感じ

次はベーコン・にんにくをみじん切りに

f:id:hagimi:20091117215803j:image

かなり大きめの中華なべにオリーブオイルとみじん切りしたにんにくをいれ炒めます

f:id:hagimi:20091117215808j:image

にんにくのいい香りがしてきたらベーコン投入し、少し火を通したら白菜の芯の部分からドサっと入れます。

最初はかなり量が多いですが、だんだんしなっとなってきて水気が出てくるのでさらに塩・コショウを入れます。

味付けは後はコンソメ任せなので塩・コショウは少し大目でも大丈夫です。

白菜を全部入れてから、全体的にしなっとなってきたらコンソメの素を白菜の水気の中に投入

牛乳を全部いれ、かき混ぜてから弱火でふたをしてしばらく煮込み、沸騰するまで待ちます。

f:id:hagimi:20091117221252j:image

沸騰してちょっと煮込んだら、後は味見をして味を調えます。

最後に水溶き片栗粉をちょっとづつかき混ぜながらまわし入れてすこーしとろみが付いたら完成です!

f:id:hagimi:20091117221956j:image

(゚д゚)ウ-(゚Д゚)マー(゚A゚)イ-…ヽ(゚∀゚)ノ…ゾォォォォォ!!!!

ラストに

パスタをゆでてこの白菜のミルク煮をかけて、スープパスタにすると感動ですよ