【PHP×Twitter API】ツイート/リツイート/引用ツイートの基本

ツイート/リツイート/引用ツイート Tips

何個か記事を書いているPHP×Twitter APIシリーズ。今回はTwitter APIを使ったツイート/リツイート/引用ツイート(コメント付きリツイート)の基本をご紹介します。画像を入れたツイートなど、少々凝ったものは対象外としています。

Cronで実行することで時間を指定して呟いたり、定期的に同じツイートをリツイートしたりすることができます。

この記事で分かること
  • PHPを利用したツイート/リツイート/引用ツイートの方法
  • ツイート/リツイート/引用ツイートのサンプルコード
  • ツイート内への改行の入れ方
  • 文字数制限を超えたツイートはどうなるのか

必要なもの

  1. ツイッター開発者アカウント
    ツイッターアカウントとは別にAPIを利用するために必要になります。本記事ではアカウントの登録とAPPの作成は割愛しています。

ツイート/リツイート/引用ツイートの方法

以下のステップについては、過去記事に書いた内容と同じですのでこちらをご覧ください。

ステップ1. Twitter Developersにてアクセストークンを取得
ステップ2. TwitterOAuthを設置

ステップ3. PHPファイルを作成

ツイート、リツイート、引用ツイートのそれぞれについてコードを用意しています。

コード1. ツイート用コード

普通に呟きます。
ハイライト部はパラメータです。

ツイート内での改行は「PHP_EOL」を使用します。

<?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.";
  }
?>

同じ内容のツイートの連投はできません。
エラーメッセージは「Status is a duplicate.」が表示されます。

結果はこうなります。

コード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.";
  }
?>

一度リツイートしたツイートのリツイートはできません。再度リツイートしたい場合は、一度リツイートを解除する処理が必要です。
上記コードの「”statuses/retweet”」の部分を「”statuses/unretweet”」とするとリツイートの解除ができます。

エラーメッセージは「You have already retweeted this Tweet. 」が表示されます。

コード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.";
  }
?>

ツイートと同じく、同じ内容の引用リツイートの連投はできません。
エラーメッセージは「Status is a duplicate.」が表示されます。

文字数制限を超えるツイートはどうなるのか

とてもとても気になるのでAPIを使わないと実現できない、140文字を超える日本語のツイートを試してみました。

Tweet needs to be a bit shorter.

「短くしてね」というエラーがでてツイートされませんでした。後ろが切られてツイートされる可能性もあるのかと少し予想してましたが、順当ですね。

APIを利用したタイムライン取得回数の制限について

最後になりましたが、APIを利用した呟きには制限があります。3時間の間に何回利用するが制限対象となります

ツイートリツイート引用ツイート(合算):300件/3時間

あとがき

今回紹介した内容は、非常にシンプルなので使いやすいと思います。是非ご活用ください。

プログラムを実行→ツイッターで確認→手動でツイートを削除
というのを繰り返していたら誤ってお気に入りのツイートを消してしまいました。代償は大きい…。皆様もお気を付けください。

米国株ブログランキングに参加しています。応援のクリックお願いしますm(._.)m
にほんブログ村 株ブログ 米国株へ


Tips
\この記事をシェアする/
\クノウをフォローする/
米国株にかける

コメント

タイトルとURLをコピーしました