【PHP】Twitter API v2を使ってツイートする

2022-05-30PHP,twitter

こちらの記事では、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にて権限の変更が必要なことに注意が必要です。

PHP,twitter,TwitterOAuth

Posted by izadori