何個か記事を書いているPHP×Twitter APIシリーズ。今回はTwitter APIを使ったツイート/リツイート/引用ツイート(コメント付きリツイート)の基本をご紹介します。画像を入れたツイートなど、少々凝ったものは対象外としています。
Cronで実行することで時間を指定して呟いたり、定期的に同じツイートをリツイートしたりすることができます。
- PHPを利用したツイート/リツイート/引用ツイートの方法
- ツイート/リツイート/引用ツイートのサンプルコード
- ツイート内への改行の入れ方
- 文字数制限を超えたツイートはどうなるのか
必要なもの
- ツイッター開発者アカウント
ツイッターアカウントとは別にAPIを利用するために必要になります。本記事ではアカウントの登録とAPPの作成は割愛しています。
ツイート/リツイート/引用ツイートの方法
以下のステップについては、過去記事に書いた内容と同じですのでこちらをご覧ください。
ステップ1. Twitter Developersにてアクセストークンを取得
ステップ2. TwitterOAuthを設置
ステップ3. PHPファイルを作成
ツイート、リツイート、引用ツイートのそれぞれについてコードを用意しています。
コード1. ツイート用コード
普通に呟きます。
ハイライト部はパラメータです。
<?php require "twitteroauth/autoload.php"; use Abraham\TwitterOAuth\TwitterOAuth; //ステップ1でTwitter developersから取得した値を代入 $consumerKey = "xxxxxxxxxx"; $consumerSecret = "xxxxxxxxxx"; $accessToken = "xxxxxxxxxx"; $accessTokenSecret = "xxxxxxxxxx"; $connection = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret); //ツイートする $tweet = "そろそろiDeCoの「あおぞらDC定期(1年)」へのフルインベストメントをスイッチングするべきか?" . PHP_EOL . "うーむ、悩ましい。まいっちんぐマチコ先生。"; $result = $connection->post("statuses/update", ["status" => $tweet]); //メッセージを表示 if(isset($result->errors)) { //失敗 echo "Error occurred.<br>Error message: " . $result->errors[0]->message; } else { //成功 echo "Succeeded."; } ?>
結果はこうなります。
そろそろiDeCoの「あおぞらDC定期(1年)」へのフルインベストメントをスイッチングするべきか?
— クノウ=明日から本気出すブロガー (@munokuno) March 6, 2020
うーむ、悩ましい。まいっちんぐマチコ先生。
コード2. リツイート用コード
続いてリツイート用コードです。
ステータスIDを指定します。
<?php require "twitteroauth/autoload.php"; use Abraham\TwitterOAuth\TwitterOAuth; //ステップ1でTwitter developersから取得した値を代入 $consumerKey = "xxxxxxxxxx"; $consumerSecret = "xxxxxxxxxx"; $accessToken = "xxxxxxxxxx"; $accessTokenSecret = "xxxxxxxxxx"; $connection = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret); //リツイートするツイートのステータスIDを準備 $status_id = "xxxxxxxxxxxxxxxxxxx"; //リツイートする $result = $connection->post("statuses/retweet", ["id" => $status_id]); //メッセージを表示 if(isset($result->errors)) { //失敗 echo "Error occurred.<br>Error message: " . $result->errors[0]->message; } else { //成功 echo "Succeeded."; } ?>
コード3. 引用リツイート用コード
最後に引用リツイートです。コメント付きリツイートとも呼ばれます。
ツイートのURLを指定します。
<?php require "twitteroauth/autoload.php"; use Abraham\TwitterOAuth\TwitterOAuth; //ステップ1でTwitter developersから取得した値を代入 $consumerKey = "xxxxxxxxxx"; $consumerSecret = "xxxxxxxxxx"; $accessToken = "xxxxxxxxxx"; $accessTokenSecret = "xxxxxxxxxx"; $connection = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret); //コメントとリツイートするURLを準備 $tweet = "xxxxxxxx"; $rt_url = "https://twitter.com/xxxxxxxx/status/xxxxxxxxxxxxxxxxxxx"; //引用リツイートする $result = $connection->post("statuses/update", ["status" => $tweet, "attachment_url" => $rt_url]); //メッセージを表示 if(isset($result->errors)) { //失敗 echo "Error occurred.<br>Error message: " . $result->errors[0]->message; } else { //成功 echo "Succeeded."; } ?>
文字数制限を超えるツイートはどうなるのか
とてもとても気になるのでAPIを使わないと実現できない、140文字を超える日本語のツイートを試してみました。
Tweet needs to be a bit shorter.
「短くしてね」というエラーがでてツイートされませんでした。後ろが切られてツイートされる可能性もあるのかと少し予想してましたが、順当ですね。
APIを利用したタイムライン取得回数の制限について
最後になりましたが、APIを利用した呟きには制限があります。3時間の間に何回利用するが制限対象となります。
ツイート・リツイート・引用ツイート(合算):300件/3時間
あとがき
今回紹介した内容は、非常にシンプルなので使いやすいと思います。是非ご活用ください。
プログラムを実行→ツイッターで確認→手動でツイートを削除
というのを繰り返していたら誤ってお気に入りのツイートを消してしまいました。代償は大きい…。皆様もお気を付けください。
おはようございます!
— クノウ=明日から本気出すブロガー (@munokuno) March 6, 2020
ブログを書くべくTwitter APIで色々テストをしていたら
「ここ最近で一番出来がいいと思っているが、いいねがあまりつかなかったツイート」
を誤って亡き者にしてしまいましたorz
自分のツイートのリツイートは同一人物扱いなので削除するときには注意です⚠️
土曜日です。。
コメント