cakePHPでtwitterAPIを使う。超分かり易くて簡単なライブラリがあった。
Consuming OAuth-enabled APIs with CakePHP
このページからライブラリをダウンロードして、vendorsに、OAuthフォルダをそのまま格納する。
そして、controllerとviewにそれぞれ下記のようなコードを書く。
※コールバック用URLとコンシューマーキー、コンシューマーシークレットは状況に合わせて入力する必要がある
hoge_controller.php
<?php App::import('Vendor', 'oauth', array('file' => 'OAuth'.DS.'oauth_consumer.php')); class HogeController extends AppController{ public $name = 'Hoge'; public $uses = Null; function index(){ //セッションからアクセストークンの取得 $accessToken = $this->Session->read('twitter_access_token'); if(!empty($accessToken)){ $consumer = $this->createConsumer(); //認証情報の確認 $user_data = $consumer->get($accessToken->key, $accessToken->secret, 'http://api.twitter.com/1/account/verify_credentials.json'); $user_data = json_decode($user_data); if(!$user_data->id){ $this->redirect('./login'); } $this->set('user_data',$user_data); }else{ $this->redirect('./login'); } } public function login(){ } public function logout(){ $this->Session->delete('twitter_access_token'); $this->redirect('./login'); } public function twitter() { $consumer = $this->createConsumer(); $requestToken = $consumer->getRequestToken('https://api.twitter.com/oauth/request_token', 'http://コールバックURL'); $this->Session->write('twitter_request_token', $requestToken); $this->redirect('https://api.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('https://api.twitter.com/oauth/access_token', $requestToken); $this->Session->write('twitter_access_token', $accessToken); $this->redirect('./'); } private function createConsumer() { return new OAuth_Consumer('コンシューマーキー', 'コンシューマーシークレット'); } } ?>
index.ctp(index用のview)
<h1>Hoge!</h1> <img src="<?php echo $user_data->profile_image_url;?>" width="24" height="24" /> <?php echo $user_data->screen_name; ?> ( <a href="./logout">Logout?</a> )
login.ctp(login用のview)
<h1>Hoge!</h1> <h2><a href="./twitter">Please Login!</a></h2>
これで、下記のようにtwitterAPIを使ってログインできるようになり、ログインすると、twitterアカウントのアイコンとscreen_nameが表示される。
ログインしていないと、下記のログイン画面が表示される。
ログインした後のindex画面