CakephpでTwitter APIを使ってツイートをとってみました
ローカル環境で行い、アクセストークンを手抜して取得したバージョンです
cakephpはインストール済み
参考)
ComposerでCakephpを入れてみた | bgbgbg
cakephp cookbook のチュートリアルをcomposerを使ってやってみた | bgbgbg
TwitterOAuth PHP Library for the Twitter REST APIを使いました
まずはTwitterOAuthのインストール
composerを使うのでCakephpのアプリケーションディレクトリで
$ composer require abraham/twitteroauth
これで、Vendor/abraham/twitteroauth
にインストールされます
ControllerとViewを用意
$ vim Controller/TwittersController.php
App::import('Vendor','abraham/twitteroauth/autoload');
use Abraham\TwitterOAuth\TwitterOAuth;
をclassの上に追記しておくと
$connection = new TwitterOAuth($consumer_key, $consumer_secret, $access_token, $access_token_secret);
とTwitterOAuthが呼び出せるようになります
Twitter APIをたたくには4つの情報が必要になります
- consumer_key
- consumer_secret
これが呼び出すアプリのIDとパスワードに当たります
これから作るCakephpのサービスをTwitterが区別できるようにします
Twitter Application Management
にアクセスしてアプリを作ります
Create New App で
Name
Description
Website
を入力
Websiteはローカル環境なので http://127.0.0.1/ にしておきました
登録したら
Keys and Access Tokensタブをクリック
- Consumer Key (API Key)
- Consumer Secret (API Secret)
が手に入りました
あと2つ、Access Tokenが必要になります
これはユーザーの情報をプログラムが取得する際のIDとパスワードに当たります
ユーザーのTwitter情報を取得する際に、ユーザーID・パスワードをプログラムでもらうのでなく
Access Tokenをもらって認証しにいきます
アプリごとに発行されるIDとパスワードなので、少しは安全になります
Access Tokenは同じ画面下でGenerateで生成できます
※画像は一度生成したあとだったのでRegenerateになっています
そしたら
- Access Token
- Access Token Secret
が手に入ります
そしたらプログラムに戻って、Twitter情報をとってみます
<?php
App::uses('AppController', 'Controller');
App::import('Vendor','abraham/twitteroauth/autoload');
use Abraham\TwitterOAuth\TwitterOAuth;
class TwittersController extends AppController {
public function index() {
$consumer_key = 'xxxxxx';
$consumer_secret = 'xxxxxx';
$access_token = 'xxxxxx-xxxxxx';
$access_token_secret = 'xxxxxx';
$connection = new TwitterOAuth($consumer_key, $consumer_secret, $access_token, $access_token_secret);
$params = ['q' => '#cakephp' ,'count' => '10', 'lang'=>'ja'];
$data = $connection->get('search/tweets', $params)->statuses;
$this->set(compact('data'));
}
}
これで、#cakephpのハッシュタグがついた情報が取れるので
Viewで表示させる処理をかけば情報が表示できます
実際に使うにはAccess TokenをTwitter認証させて取る必要があります