Twitter Rest API 開発

2018.4.3 (火)

TwitterのAPIを使っていろいろな開発をします。
developer.twitter.com
Twitterのアカウントをもっている人はそのままログインできます。アカウントのない人はTwitterのアカウントを作成してください。

アプリケーションの登録

https://apps.twitter.com/

以下2つを取得する。
– consumer_key
– consumer_secret

基本的な設定とTweetするところまで

twitteroauthパッケージの導入

アブラハムさんのtwitteroauthを使います。
Github: https://github.com/abraham/twitteroauth
Packgist: https://packagist.org/packages/abraham/twitteroauth

composer.jsonの設定

Laravelとか予めcomposer.jsonがある場合は以下のように設定。普通にスクラッチで書く場合はcomposer.phar require abraham/twitteroauth:~0.7.4

    "require": {
        "php": ">=7.0.0",
        "fideloper/proxy": "~3.3",
        "intervention/image": "^2.4",
        "laravel/framework": "5.5.*",
        "laravel/tinker": "~1.0",
        "twbs/bootstrap": "^3.3",
    "abraham/twitteroauth": "~0.7.4" ←追加
    },
    "require-dev": {
        "barryvdh/laravel-debugbar": "^3.1",
        "filp/whoops": "~2.0",
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "~1.0",
        "phpunit/phpunit": "~6.0",
    "abraham/twitteroauth": "~0.7.4" ←追加
    },

これでcomposer updateしておきます。vender以下に追加されます。

vender/abraham/twitteroauth

コントローラの設定

ルーティング、コントローラ、ビューはよしなに作るとよいです。
コントローラで設定する内容は、

  • コンシューマーキー(APIキー)
  • コンシューマーシークレット(APIシークレット)
  • アクセストークン
  • アクセストークンの秘密

の4つを設定して、

  • TwitterAPI接続
  • POST (Tweet)

という感じです。

まずはパッケージを使えるようにします。

use Abraham\TwitterOAuth\TwitterOAuth;

APIキー諸々設定。プロパティーに入れておくのがいいと思います。(本当はenvの方がいいかも。)こんな感じになります。

....
class TwAPIController extends Controller
{
    /**
     * Twitter API
     */
    private $consumerKey = "xxxxxxxxxxxxxxxxxx";
    private $consumerSecret = "xxxxxxxxxxxxxxxxxx";
    private $accessToken = "xxxxxxxxxxxxxxxxxx";
    private $accessTokenSecret = "xxxxxxxxxxxxxxxxxx";
....

実行自体は、メソッド内に書けばよいので、こんな感じ。

public function beta(Request $request, $accessid)
{   
    $connection = new TwitterOAuth(
        $this->consumerKey,
        $this->consumerSecret,
        $this->accessToken,
        $this->accessTokenSecret
    );
    $result = $connection->post("statuses/update", array("status" => "foo bar baz"));
    var_dump($result);  
    return "twitter beta";
}

これで「foo bar baz」がTweetできます。

Twitterのハッシュタグを検索する

簡単なツィートができたところで今度は検索してみます。

$result = $connection->get("search/tweets", array("q" => "twitter"));

これでtwitterという文字列を検索できます。

高度な検索

APIでこれが全部できるようになっているかどうかは私自身確認していませんが、こんなこともできるようになっているようです。
Twitter、過去のすべての公開ツイートの検索を可能に
https://twitter.com/search-advanced
「Twitter公式検索では、過去のすべてのツイートが検索可能ですが、search/tweets API では過去1週間のツイートに限られるのが、ちょっと残念なところです。」というのがありました。


https://qiita.com/k_kinoshita0104/items/9f9e6f75d58b40663673
https://syncer.jp/Web/API/Twitter/REST_API/
Twitter API search/tweets で 100件以上のツイートを取得する(PHP)