CakephpでTwitter APIを使ってツイート情報をとってみた

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 で

twitterapi

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で生成できます

twitterapi3

※画像は一度生成したあとだったので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認証させて取る必要があります