作業ログ(2010/09/28分)

  • cakephp
    • prefix routingはできたので、Auth Componentと組み合わせて

http(s)://domain/controller/action/

とアクセスしたときのログイン認証はUsersテーブル、

http(s)://domain/admin/controller/action/

とアクセスしたときのログイン認証はAdminsテーブルを使用するようにしたいけど,
formをPOSTすると,

http://domain/admin/admins/login

というURLにアクセスしてしまい,missing controllerになってしまう.
$this->Auth->userModelを書き換えてもうまくいかないので,ググっていると,
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=2455&forum=3&post_id=6210#forumpost6210
という投稿を見つけたので明日以降試してみる.

作業ログ(2010/09/24分)

自宅で作業

<?php
// oauth componentをincludeする
App::import('Vendor', 'oauth', array('file' => 'OAuth' . DS . 'oauth_consumer.php'));
class MainController extends AppController {
        var $name = 'Main';
        var $uses = null;
        var $helpers = array('Form');

        function index() {}

        public function twitter() {
                $consumer = $this->createConsumer();
                $requestToken = $consumer->getRequestToken('http://twitter.com/oauth/request_token', 'oauth認証後に戻ってくるcallbackurlを書く');
                $this->Session->write('twitter_request_token', $requestToken);
                $this->redirect('http://twitter.com/oauth/authorize?oauth_token=' . $requestToken->key);
        }

        public function twitter_callback() {
                $requestToken = $this->Session->read('twitter_request_token');
                $consumer = $this->createConsumer();
                $accessToken = $consumer->getAccessToken('http://twitter.com/oauth/access_token', $requestToken);

                $myposts = $consumer->get($accessToken->key,
                                           $accessToken->secret,
                                           'http://api.twitter.com/1/statuses/user_timeline.json',
                                           array('count' => 10));

                // 出力確認用
                foreach( json_decode($myposts) as $post ) {
                        echo $post->text . '<br />';
                        echo strftime('%Y/%m/%d %H:%M:%S', strtotime( (string)$post->created_at )) . '<br />';
                }
        }

        Private function createConsumer() {
                return new OAuth_Consumer('Consumer key', 'Consumer secret');
        }
}

作業ログ

自宅で作業

外部から直接サービスを呼び出す場合、名前付きパラメータが便利!

http://ホスト名/コントローラ名/アクション名/key:value/key2:value/...

というURLの場合、

$this->params['named']

にkeyとvalueの組み合わせが入ってくる。