LoginSignup
18
21

More than 5 years have passed since last update.

PHPからTwitterを操作する、いろいろなパターン(TwitterOAuth編)

Last updated at Posted at 2016-12-29

やりたいこと

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

動作確認環境、使用ライブラリ等

サンプルコード

【共通】ライブラリの読み込みからオブジェクト生成まで

header.php
<?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);
footer.php
if($twitter->getLastHttpCode() == 200) {
    // 操作に成功した時の処理
} else {
    // 操作に失敗したときの処理
}

以下のサンプルの共通部分。適宜付ける。

自身のタイムラインを取得する

この例では、自身のタイムライン上にある直近20ツイートを抽出している。

get_timeline.php
$result = $twitter->get(
                    "statuses/home_timeline",
                    array(
                        "count" => 20
                    )
);

foreach($result as $tweet)
{
    print $tweet->user->name . "さんのツイート:";
    print $tweet->text."\n";
}

出力サンプル

output
デル株式会社 法人向けテクニカルサポートさんのツイート:パスワードリセットディスクの使用方法 [動画約1分]
ハンズネットさんのツイート:おハンズございます。
本日も宜しくお願いいたします!
ツクモ名古屋1号店さんのツイート:【3F買取センター】9のつく日のお楽しみ!本日29日(木)は 全品10%増額買取のツクモの日

Tweetに関しては、この他にも様々な情報を取得できるようなので、var_dumpする等して確認されたし。

ツイートを検索する

search_tweets.php
$result = $twitter->get(
                    "search/tweets",
                    array(
                        "q" => "うまい棒なっとう味"
                    )
);

foreach($result->statuses as $tweet)
{
    print $tweet->user->name . "さんのツイート:";
    print $tweet->text."\n";
}

「うまい棒なっとう味」を含むツイートを検索する。
こわくないよ。おいしいよ。

画像を添付してツイートする

tweet_with_pictures.php
$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制限にだけは気を付けよう。

18
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
21