Twitter APIの人気PHPライブラリーTwitterOAuthを、CakePHP3に入れてみました。
CakePHP3もTwitterOAuthもComposerに対応しているので、Composerを利用してインストールしてみました。

Composerの使い方がそもそもそんなにわかっていないので、Composerの使い方みたいな内容になってます。

前提

  • CakePHP 3.2を利用中
  • Composerをインストール済み

TwitterOAuthをダウンロード…しなくて良かった!

CakePHP2でもTwitterOAuthを使っていたので、同じやり方か〜?と思いダウンロードして入れてみようとしていたのですが、CakePHP3になってフォルダ構造がだいぶ変わっていてどこに入れていいかよくわからない。
vendorフォルダっぽいな〜というとこまで調べていたらComposerならフォルダも勝手に作ってインストールしてくれるとか。
じゃあComposerで入れとこうということで方針を変更しました。

多分GitHubからダウンロードしてvendorフォルダにぽいっと追加しても問題なく動かせますが、Composerのバージョン管理やラクラク更新の恩恵がないのだと思われます。(たぶん)

というわけで必要ないのですが、abraham/twitteroauthが公開されている場所も念のため載せておきます。
abraham/twitteroauth(GitHub)

CakePHP3のcomposer.jsonに追記する

composer.jsonの「require」の括弧の末尾に、以下のように追記します。

/* CAKEPHP_HOME/composer.json */

"require": {
        "php": ">=5.5.9",
        "cakephp/cakephp": "~3.2",
        "mobiledetect/mobiledetectlib": "2.*",
        "cakephp/migrations": "~1.0",
        "cakephp/plugin-installer": "*",
        "abraham/twitteroauth": "*"  // ←追記
    },

スクリーンショット 2016-06-23 11.31.00

バージョンの管理をするなら、「*」の部分を管理したいバージョンに変更します。
最初よくわからず、間違えて存在しないバージョンを指定していたのですが、当然エラーが出て失敗したのでご注意です。

Composerでアップデートする

composer.jsonに追記したら、コマンドラインからアップデートして、TwitterOAuthをインストールします。
他のライブラリに影響がないように、ライブラリを指定してアップデートしました。

$ composer update abraham/twitteroauth

スクリーンショット 2016-06-23 11.31.34

コマンドを実行すると、インストールが始まるのでしばらく待ちます。

スクリーンショット 2016-06-23 11.32.15

エラーなどが出ずに終了したら、下のフォルダができているのを確認して、インストールは完了です。

CAKEPHP_HOME/vendor/abraham/twitteroauth

TwitterOAuthをControllerで利用する

インストールしたTwitterOAuthの呼び出し方を簡単に確認しておきます。
CakePHP3での読み込み(useの記述)がポイントですね。

// Twitter連携したいページのControllerとかComponentに追記

use Abraham\TwitterOAuth\TwitterOAuth;

class PagesController extends AppController {

// twitterのコネクション生成に必要な情報を設定
$consumerKey = "twitterのコンシューマーキー";
$consumerSecret = "twitterのシークレット";
$accessToken = "twitterのアクセストークン";
$accessTokenSecret = "twitterのトークンシークレット";

// コネクションを生成
$connection = new TwitterOAuth ( $consumerKey, $consumerSecret, $accessToken, $accessTokenSecret );

// twitter連携して情報を取得したりする(これはワード検索してtweetを取得するサンプル)
$statuses = $connection->get ( 'search/tweets', array (
  'lang' => 'ja',
  'q' => '検索キーワード',
  'count' => '5'
) );

// 取得したtwitterの情報をViewにセット
$this->set(compact('statuses'));
}

TwitterOAuthのインストールについては以上。
CakePHP3でのTwitterOAuthログイン認証とかもやりたいと思っているので、機会があればまた。

おわり