前回作った Xrea + CakePHP + MeCab で日本語形態素解析 を組み合わせてマルコフ連鎖でカオスな文章をつぶやく予定だが、今回は OAuth で Twitter API とやり取りして自分のアカウントに「つぶやけ」とツイートする Bot を作るまで。
アプリの登録
自分のアカウントにログインしてから → [設定] → [連携アプリ] → [開発者の方へのこちら] をたどっていくと、「Twitterアプリケーション」というページにたどり着くので「新しいアプリケーションを追加」でアプリを登録する。
登録の注意点
基本的にはあとで変更可能なので、適当に進めて問題ないが、今回は CakePHP から Tweet するので、下記の設定は間違いなくしておく。
- アプリケーションの種類 : ブラウザアプリケーション
- Default Access type : Read & Write
OAuth ライブラリ設置
CakePHP で使えるライブラリが配布されていたのでそれを使う。
下記からダウンロードし、解凍したファイルを /vendors/ 配下に設置する。
OAuth consumers for CakePHP – by cakebaker
OAuth 認証から Access Token 取得まで
OAuth 認証には、Consumer key と Consumer secret が必要になるがこれは「Twitterアプリケーション」 から登録しているアプリの詳細を見れば確認できる。
これで、Access Token を取得することができるが、これは下記の記事に詳しく書かれているので参考のこと。
OAuth consumers for CakePHP – by cakebaker
今回は、個人的に(自分のユーザアカウントのみが)使用するため、API を使ってAccess Token 取得しなくても、Twitter Applications | dev.twitter.com → 「My Access Token」 のページで Access Token と Access Token Secret が書かれているためそちらで確認。
CakePHP からツイート
とりあえず、つぶやかせてみるため下記のコントローラを設置 → つぶやくアクションにアクセス → つぶやけ。
< ?php App::import('Vendor', 'Oauth', array('file'=>'OAuth'.DS.'oauth_consumer.php')); class BotController extends AppController { var $name = 'Bot'; var $uses = array(); // Consumer key の値 var $consumerKey = 'consumerKey'; // Consumer secret の値 var $consumerSecret = 'consumerSecret'; // Access Token の値 var $accessToken = 'accessToken'; // Access Token Secret の値 var $accessTokenSecret = 'Access Token Secret'; function update() { $consumer = new OAuth_Consumer($this->consumerKey, $this->consumerSecret); $tweet = $consumer->post( $this->accessToken, $this->accessTokenSecret, 'http://twitter.com/statuses/update.xml', array('status'=>'つぶやけ') ); pr($tweet); exit(); } }
参考
OAuthプロトコルの中身をざっくり解説してみるよ – ゆろよろ日記
Twitter API – TwitterまとめWiki
Twitter API Wiki / Twitter API Documentation (英語)
Twitter API 仕様書 (日本語)
PHP+OAuthでTwitterのBotを作ってみる – SDN Project
トラックバック一覧
この記事にはトラックバックがついていません。