何個か記事を書いているPHP×Twitter APIシリーズ。今回はTwitter APIを使ったツイート/リツイート/引用ツイート(コメント付きリツイート)の基本をご紹介します。画像を入れたツイートなど、少々凝ったものは対象外としています。
Cronで実行することで時間を指定して呟いたり、定期的に同じツイートをリツイートしたりすることができます。
必要なもの
- ツイッター開発者アカウント
ツイッターアカウントとは別に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
自分のツイートのリツイートは同一人物扱いなので削除するときには注意です⚠️
土曜日です。。
コメント