【PHP】Twitter API v2を使ってツイートする
こちらの記事では、PythonとTweepyを使ってTwitter API v2でツイートする方法を紹介しました。この記事では、PHPで同様にTwitter API v2によるツイートを行う方法についてまとめてみたいと思います。
前準備
PHPでTwitter APIを使用するライブラリはいくつかありますが、今回はTwitterOAuthを使います。
TwitterOAuthのインストール
TwitterOAuthをインストールするにはcomposer
を使用します。
composer require abraham/twitteroauth
権限の変更
こちらの記事を参考にしてください。
ツイートする
API v1.1
参考までにAPI v1.1での投稿方法を示します。abraham/twitteroauthでは、statuses/update
にPOSTすることで投稿可能です。
require_once "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$apiKey = "your_api_key";
$apiSecret = "your_api_secret";
$accessToken = "your_access_token";
$accessTokenSecret = "your_access_token_secret";
$connection = new TwitterOAuth($apiKey, $apiSecret, $accessToken, $accessTokenSecret);
$result = $connection->post("statuses/update", ["status" => "API v1.1のテスト"]);
API v2
API v2ではtweets
にデータをPOSTします。API v2を使用するには、
$connection->setApiVersion("2");
が必要です。
また、API v1.1と異なり、POSTするデータの形式はJSONとなりますので、post()
メソッドの第3引数をtrue
にすることを忘れないようにしてください。
require_once "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$apiKey = "your_api_key";
$apiSecret = "your_api_secret";
$accessToken = "your_access_token";
$accessTokenSecret = "your_access_token_secret";
$connection = new TwitterOAuth($apiKey, $apiSecret, $accessToken, $accessTokenSecret);
$connection->setApiVersion("2");
$result = $connection->post("tweets", ["text" => "API v2のテスト"], true); # trueを忘れないように
なお、同じ投稿は続けてできないように、v1.1, v2ともにAPIによって制限されています。同じ投稿をするには、少なくとも12時間程度空けておく必要があるようです。
テストのため、連投をする必要がある場合、同じ投稿とならないように乱数や時刻などをツイート内容に付加しておくのが良いです。
リツイートする
API v1.1
API v1.1ではstatuses/retweet
にツイートするIDを付加してPOSTします。
require_once "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$apiKey = "your_api_key";
$apiSecret = "your_api_secret";
$accessToken = "your_access_token";
$accessTokenSecret = "your_access_token_secret";
$id = "tweet_id";
$connection = new TwitterOAuth($apiKey, $apiSecret, $accessToken, $accessTokenSecret);
$result = $connection->post("statuses/retweet/" . $id);
API v2
API v2ではusers/user_id/retweets
にPOSTします。パスのuser_id
は19桁の数字からなる投稿するユーザーのIDです。スクリーン上に表示されているIDではないので注意が必要です。users/me
からGETすることで簡単に知ることができます。
POSTするデータはJSON形式でツイートするIDを渡します。
require_once "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$apiKey = "your_api_key";
$apiSecret = "your_api_secret";
$accessToken = "your_access_token";
$accessTokenSecret = "your_access_token_secret";
$id = "tweet_id";
$connection = new TwitterOAuth($apiKey, $apiSecret, $accessToken, $accessTokenSecret);
$connection->setApiVersion("2");
$result = $connection->get("users/me");
$result = $connection->post("users/" . $result->data->id . "/retweets", ['tweet_id' => $id], true);
引用リツイートする
引用リツイートにはv1.1, v2ともに専用のAPIが存在しません。通常のツイート用のAPIを使用します。
ツイートする本文にhttps://twitter.com/{ユーザー名}/status/{ツイートのID}
を含めるだけです。
API v2では以下のようになります。
require_once "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$apiKey = "your_api_key";
$apiSecret = "your_api_secret";
$accessToken = "your_access_token";
$accessTokenSecret = "your_access_token_secret";
$id = 'tweet_id';
$tweet_uri = 'https://twitter.com/user_name/status/' . $id;
$connection = new TwitterOAuth($apiKey, $apiSecret, $accessToken, $accessTokenSecret);
$connection->setApiVersion("2");
$result = $connection->post("tweets", ["text" => "引用リツイートのテスト\n" . $tweet_uri], true);
まとめ
PHP用のTwitter APIライブラリであるTwitterOAuthを使って、PHPでツイートする方法を紹介しました。使い方は難しくありませんが、ツイートするためにはDeveloper Portalにて権限の変更が必要なことに注意が必要です。
ディスカッション
コメント一覧
まだ、コメントがありません