【完全保存版】TwitterAPIの基本的な使い方 For Cowitterライブラリ【サンプルコード付き】

Twitter非公式APIAPI


Warning: Undefined variable $content in /home/c9099599/public_html/dstrikes.net/wp-content/themes/cocoon-child-master/tmp/content.php on line 76
この記事は 約8 分で読めます。

TwitterAPIを使ったアプリケーションを作りたいなWeb開発したいなと思った時に適切なライブラリとしてTwistOauthの後継としてCowitterが一番メジャーなのではないかと思います

しかし、私のようななんちゃってPHPerにとってはCowitterの説明文だけでは不十分過ぎて使い方が分からないのです
Google検索しても使いたい方法が見つからなかったり古いライブラリが使われていたりと不便だったのでまとめ個人的にまとめる。

TwitterAPIライブラリCowitterはこちら

ライブラリインストール

composer require mpyw/cowitter:^1.0

Composerからインストールします。
上記コマンドを入力するだけで自動的にダウンロードされます便利ですね!

ライブラリの準備

ライブラリの使用準備はとても簡単読み込むのとuseを記述する
ちなみに私は未だにuseの意味がイマイチ良く分かっていない
このライブラリを使うぞって言う宣言なのだな?程度の理解です。

require __DIR__ . '/vendor/autoload.php';

use mpyw\Co\Co;
use mpyw\Co\CURLException;
use mpyw\Cowitter\Client;
use mpyw\Cowitter\HttpException;

実際に動かしてみる

下準備についてはAPIの準備やらDev.twitterの申請など色々あるんですが、そこは他の技術系ブログでも解説されてるので不要かな?と思いましたので省略します。
わからない人は Twitter API 使い方 などでggって下さい。

$client = new Client(['CK', 'CS', 'AT', 'ATS']);

これでクライアントのClassが呼ばれて準備されます。
CK CS AT ATSについてはそれぞれ
ConsumerKey
ConsumerSecret
AccessToken
AccessTokenSecret
の意味になりますから、ここは変数にして代入しますCKとCSについてはTwitterDevに申請して発行して貰います。

スポンサーリンク

Tweetを検索

まずはCowitterのUsage通りにやってみます。

use mpyw\Cowitter;
use mpyw\Co\Co;
use mpyw\Co\CURLException;
use mpyw\Cowitter\Client;
use mpyw\Cowitter\HttpException;
$ck  = 'コンシューマーキー';
$cs  = 'コンシューマーシークレット';
$at  = 'アクセストークン';
$ats = 'アクセストークンシークレット';
$client = new Client([$ck,$cs,$at,$ats]);
$statuses = $client->get('search/tweets', ['q' => 'cowitter'])->statuses;
var_dump($statuses);

ここでSearch/tweetsの後に ‘q’ => ‘cowitter’と言う部分がありますがCowitterと言う文字列をツイートしている物を検索しています。

ちなみに日本語文字列でも自動的にUrlencodeされますので気にする必要ありません。

Tweetする

またまたマニュアル通りにツイートしてみます。

$client->post('statuses/update', [
'status' => 'Cowitter is the best twitter library for PHP!'
]);

こんな感じであっさり何事も無かったかのようにTweetされます。

画像Tweetする

$ids = [
    $client->postMultipart('media/upload', ['media' => new \CURLFile('photo01.png')])->media_id_string,
    $client->postMultipart('media/upload', ['media' => new \CURLFile('photo02.jpg')])->media_id_string,
];
$client->post('statuses/update', [
    'status' => 'My photos',
    'media_ids' => implode(',', $ids),
]);

あっさりですね。
ここまでは私も簡単に理解出来ました。
でも、フォローやアンフォローそしてリツイートやファボはどうするの???ってな感じで使い方がわかりませんでした。
でも、今回は自分用メモ的な意味合いも持つのでサンプルコードと健忘録的メモを入れる程度にします。

フォローする

フォローはエンドポイントが POST friendships/create なのでこうなります。

$client->post('friendships/create',[screen_name => 'mpyw']);

screen_name の所は英数のTwitterのUserネームです。
他にIDでもフォローをする事が出来ます。

アンフォローする(フォロー解除)

アンフォローはエンドポイントが POST friendships/destroy なのでこうなる。

$client->post('friendships/destroy',[screen_name => 'mpyw']);

自分のタイムラインを取得

タイムラインの取得はエンドポイントが GETなので GET statuses/home_timeline こうなる。

$client->get('statuses/home_timeline',['count'=> 30]);

上記のCountの所は30なので30件のタイムラインを取得します。
ちなみに最大値は200件までだそうです Streamingにすればリアルタイムで取れるそうです。

自分がフォローしているユーザー一覧を取得する

エンドポイント GET friends/list なので。

$client->get('friends/list',['cursor'=> 1]);

cursor 1と言うのはページング機能の事ですね 1ページ目2ページ目とかです。
他にもscreen_nameで指定したり
count で1ページ当たりの出力数を指定したり出来ます。
skip_status => trueにする事でユーザー情報の詳細を省略する事が出来るようです

自分のフォロワー一覧を取得する

エンドポイントは GET followers/list なので。

$client->get('followers/list',['cursor'=> 1]);

パラメーターについては上記の自分のフォロー一覧を取得するのと同じです。

エンドポイント一覧

さて、これで大体やりたい事が出来るように成るのではないかと思います。
そして先程から エンドポイントは OOOO/OOOなので、こうなる!って言ってたんですが

エンドポイントの一覧はこちらにあります。
https://dev.twitter.com/rest/reference

日本語解説付きのエンドポイント一覧を紹介されているブログ
http://dx.24-7.co.jp/twitterapi1-1-rest-api/ ←リンク切れになってしまいました。記事が削除されてしまった模様

非公式コンシューマーキーを利用して特定ツイートの会話一覧を一発で取得する

そもそもがTwitterRestAPI1.1で人気の投稿からメンション一覧を取得する事が出来ないのが問題でしょ?と言う事だと私は思います。

Twitterで人気のTweetまとめを作りたかったんですけど、手動でまとめてたんじゃ凄い手間と時間かかるじゃないですか!
まぁそれが面倒なので色々やってました。最終的に辿りついたのが非公式APIを使ってパパッと1発で取得する事が出来ました。

やり方は簡単 conversation/show:id を使って特定のTweetにメンション(返信)してるTweet一覧を取得します。
もちろんIDは特定TweetのIDを指定して出します。んじゃちょっとやってみましょう。

<?php require __DIR__ . '/vendor/autoload.php';
@require_once'dBug.php';
use mpyw\Co\Co;
use mpyw\Co\CURLException;
use mpyw\Cowitter\Client;
use mpyw\Cowitter\HttpException;
// 
$cs		= 'コンシューマーキー非公式クライアントの物を使用';
$ck		= 'コンシューマーシークレット非公式クライアントの物を使用';
$at		= 'あなたのアクセストークン';
$ats		= 'あなたのアクセストークンシークレット';
$client = new Client([$ck,$cs,"{$at}","{$ats}"]);
$rez = $client->get('conversation/show',['id' => '特定ツイートのID']);
$user_info = json_decode(json_encode($rez), true);

var_dump($user_info);

はいこれで一発で、しかも一瞬でメンションされた一覧が取得出来ますから色々捗りますね!ウヒウヒ

公式クライアントのCSとCKは こちらを参照して下さい。非公式クライアントの物ならどれを使っても通りますが、独自ユーザーのCSとCKでは弾かれてしまいますので注意です。

Cowitterの基本的な使い方やインストールについては過去記事を参照して下さい。

コメント

  1. […] 続いて、Twitter APIでは、記事をよくみるCowitterをレンタルサーバーに導入します。 $ /usr/local/bin/php71cli […]