【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にて権限の変更が必要なことに注意が必要です。




ディスカッション
コメント一覧
まだ、コメントがありません