やりたいこと
PHPスクリプトからTwitterを操作したい。
基本的にはTwitter REST APIそのもの。
メソッド(get/post)に対し、連想配列にてURL(statuses/home_timeline等)及びパラメータを渡すことで、
オブジェクトにて結果が返ってくる。
※なお、Streaming APIについては未対応とのこと。
Twitter REST APIの仕様については、下記URLを参照されたい。
https://dev.twitter.com/rest/public
当然ながら、Twitter側のAPI利用制限が適用される。乱発すると止められる可能性があるので注意。
基本的な使い方については、以前の記事を参照して頂きたい。
http://qiita.com/kumasun/items/ae3ff60acab4b1227d61
動作確認環境、使用ライブラリ等
- Twitter App https://apps.twitter.com/
- Fedora 24 Server Edition 64bit
- PHP 5.6.29
- Twitter OAuth 0.7.2 https://twitteroauth.com/
サンプルコード
【共通】ライブラリの読み込みからオブジェクト生成まで
<?php
require "twitteroauth/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$consumerKey = "your consumer key";
$consumerSecret = "your consumer secret";
$accessToken = "your access token";
$accessTokenSecret = "your access token secret";
$twitter = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret);
if($twitter->getLastHttpCode() == 200) {
// 操作に成功した時の処理
} else {
// 操作に失敗したときの処理
}
以下のサンプルの共通部分。適宜付ける。
自身のタイムラインを取得する
この例では、自身のタイムライン上にある直近20ツイートを抽出している。
$result = $twitter->get(
"statuses/home_timeline",
array(
"count" => 20
)
);
foreach($result as $tweet)
{
print $tweet->user->name . "さんのツイート:";
print $tweet->text."\n";
}
出力サンプル
デル株式会社 法人向けテクニカルサポートさんのツイート:パスワードリセットディスクの使用方法 [動画約1分]
ハンズネットさんのツイート:おハンズございます。
本日も宜しくお願いいたします!
ツクモ名古屋1号店さんのツイート:【3F買取センター】9のつく日のお楽しみ!本日29日(木)は 全品10%増額買取のツクモの日
Tweetに関しては、この他にも様々な情報を取得できるようなので、var_dumpする等して確認されたし。
ツイートを検索する
$result = $twitter->get(
"search/tweets",
array(
"q" => "うまい棒なっとう味"
)
);
foreach($result->statuses as $tweet)
{
print $tweet->user->name . "さんのツイート:";
print $tweet->text."\n";
}
「うまい棒なっとう味」を含むツイートを検索する。
こわくないよ。おいしいよ。
画像を添付してツイートする
$picture1 = $twitter->upload("media/upload", ["media" => "karaage1.jpg"]);
$picture2 = $twitter->upload("media/upload", ["media" => "karaage2.jpg"]);
$result = $twitter->post(
"statuses/update",
array(
"status" => "からあげたべたい",
"media_ids" => implode(",", [$picture1->media_id_string, $picture2->media_id_string])
)
);
あらかじめTwitterに画像をアップロードしておき、メディアIDを取得。
そのメディアIDをツイート本文に付加してPOSTしている。
所感
ほとんど何でもできるという印象。
API制限にだけは気を付けよう。