Twitterは多くの動作を自動化できるAPIを提供していまして、世に出回っている多くのtwitter系ツールはこのAPIを使い倒す事で機能を提供しています。でもアクセスに制限があったり動画や画像の投稿に対応していなかったり、なんか使いづれーなと思った方もいるんじゃないでしょうか。
今回はそんなtwitterツール迷子に方々が「もう自分で作っちゃるわ!」というきっかけになれるようにTwitterOAuthの使い方を簡略化して解説してみようと思います。
簡単なtwitterAPIv2の利用開始手続き
twitterAPIはv2になってから手続き面が簡略化され、twitterのアカウントを持っていれば簡単にAPIを利用できるようになりました。2022.07.27現在でメディアのアップロードとかはv2がまだ準備されていませんが、普通にツイートするだけならv2でもできます。
今まではtwitterAPIの利用申請が面倒くさかったので敬遠していた方もいると思いますんで、改めてAPIの登録からお話を進めます。
twitterアカウント作成
・twitterのトップにログアウトした状態でアクセスする
・アカウント名・電話番号・生年月日を入力する、twitterアカウント自体は電話番号 or メールアドレスのどちらかで作成できるが、twitterAPIの申請時に両方必要になる
・余計な事はして欲しくないのでチェックボックスを外して次へクリック
・登録内容を確認して登録ボタンをクリック
・電話番号を確認してOKをクリック
・認証コードを入力して次へボタンをクリック
・任意のパスワードを入力して次へボタンをクリック
・twitterアカウントは出来たけど読みにくいので日本語表記に変更する
・これで日本語表記になる
twitterAPIの利用申請
twitterアカウントが出来たので次はtwitterAPIの利用申請を行います、昔みたいに審査とかは無くなったのでアカウント作るよりも簡単になりましたね。
ちなみにtwitterAPIの申請ページはすべて英語表記ですが、右クリックからページを日本語に翻訳した状態でページ移管すると上手く処理されない事があるので、英語表示のまま作業を進めた方がスムーズだと思います。
またtwitterAPIはログインしているtwitterアカウントと連動するので、複数アカウントを持っている方はAPIを利用したいアカウントにログインした状態でデベロッパーページを開く必要があります。
・まずは申請ページを開くとメールアドレスの入力を求められるので、Add emailリンクをクリックする
・メールアドレスを追加をクリック
・パスワードを入力して次へボタンをクリック
・メールアドレスを入力して次へボタンをクリック
・メールに認証コードが送られるので確認して入力、次へボタンをクリック
・これでメールアドレスが追加されました
・twitterAPI申請ページに戻ってI’m doneリンクをクリック
・メールアドレスが更新されたら画像の通り選択してLet’s go thisボタンをクリック
・規約に同意してSubmitボタンをクリック
・登録したアドレスに認証メールが送られるので確認
・メール内のConfirm your emailボタンをクリック
・twitterAPIで作るアプリ名を入力してGet keysボタンをクリック
・ようやくAPI Key/API Key Secret/Bearer Tokenの3つが発行されました。忘れると再発行とか面倒なのでメモ帳とかにコピペしておきましょう
・twitterAPIのダッシュボードまでたどり着けばtwitterAPIv2の利用開始手続き完了です、お疲れ様でしたm(_ _)m
OAuthの認証を設定する
twitterAPIではOAuth認証1.0と2.0が利用可能ですが、developer側では受け入れ方の設定になるのでどっちもオンしておいて、アプリ側で1.0か2.0かを指定すればいいと思います。
・プロジェクト名をクリック
・User authentication settingsのset upボタンをクリック
・OAuth 2.0・OAuth 1.0aを両方オンにする
・OAuth 2.0用の使用用途とOAuth 1.0a用の制限を設定する、例えば自動ツイートbotなどを作る場合は「Automated App or bot」/「Read and write」or「Read and write and Direct message」を選択する
・「Callback URI / Redirect URL」と「Website URL」を入力する、後述のTwitterOAuthライブラリを使うだけならどちらも「https://twitter.com/」でOK
アクセストークンとシークレットの発行
後述のtwitterOAuthライブラリを使用するにはアクセストークンとアクセストークンシークレットが必要になるので発行しておきます。
・デベロッパーのダッシュボートからプロジェクト名をクリック
・Keys and tokensタブをクリック
・Access Token and Secretに表示されているハズの「generateボタン」をクリック、oauthの設定を先にやっとかないとここの項目が表示されなかった気がします。
・Access TokenとAccess Token Secretが発行されるのでメモ帳とかに控えておく。
発行の手順はこれだけです、結構簡単ですね。補足ですがトークンの再発行には回数制限があったような気がします。3回/1日までしか再発行できなかった気がするので連打しないように気を付けましょう。
TwitterOAuthの使い方
twitterOAuthはtwitterAPIの面倒臭い所をモジュール化して簡略化された無料PHPライブラリで、APIの複雑な仕様を気にする事なく誰でも簡単に利用する事が出来ます。
twitterAPI v1.1とv2の切り替えも非常に簡単なので、バージョンアップの対応にもほとんど時間を必要としません。自前でコーディングすると仕様の確認からスタートして当初の目的を忘れるくらい時間を消費しそうな気がします笑
画像とか動画もツイートできるので、既存のツイッター系サービス・アプリはTwitterOAuthを使いこなせば大体同じような物は作れると思います。
インストールはcomposer経由のみ
TwitterOAuthは基本的にcomposer経由でのインストールしかサポートされていません、TwitterOAuthの解説記事などでgitからファイルをダウンロードしてサーバーにぶち込み直接参照するようなやり方も過去には出来たようですが、最新ver(4.0.0)で試すとエラーが出たので現在は出来ないっぽいです。
composerのインストールは詳しい記事がネット上にたくさんあるのでここでは説明を省略します。
composer経由でTwitterOAuthをインストール
composerの準備ができたらTwitterOAuthをインストールします、公式ページを確認して1行コマンドを実行するだけなので簡単です。
composer require abraham/twitteroauth
テスト実行
twitteroauthがインストールできたので公式のスクリプトを実行してみます、ユーザー情報を取得するv2仕様のコピペコードがあるので問題なく動くかテストします。
<?php
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$CONSUMER_KEY = 'APIキー';
$CONSUMER_SECRET = 'APIキーシークレット';
$access_token = 'アクセストークン';
$access_token_secret = 'アクセストークンシークレット';
$connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, $access_token, $access_token_secret);
$connection->setApiVersion('2');
$response = $connection->get('users', ['ids' => 1552167475105579008]);
var_dump($response);
上記のtwitterAPIの利用申請で取得した「APIキー/APIキーシークレット/アクセストークン/アクセストークンシークレット」の4つを使用します。またユーザー情報の検索にはユーザーIDが必要ですが、twitterのサイト上からは確認できない値なのでソースコードを開いて確認します。
ここのテストが問題なく実行できれば、後はやりたい事毎にエンドポイントとパラメータを変えるだけで簡単にtwitterAPIが使えるようになります。
TwitterAPIv2で出来る事
大きく分けるとアカウント操作系とデータ取得系に分類できまして、アカウント操作系はtwitter上でユーザーが行う行動をAPI経由で操作する事ができます。例えばツイート/RT/いいね/ブクマ/フォロー/ブロック/ミュートなどです。
データ取得系はtwitter上に存在するデータをAPI経由で取得する事が出来まして、ツイート/ユーザー/タイムライン/スペース/リストなどのデータを取得する事ができます。
詳しくはtwitterAPIv2のリファレンスに書いてますんで、時間がある方はさらっと目を通しておくと理解が深まると思います。
twitterAPIv2のユースケースとエンドポイント&必須パラメータの一覧
twitterAPIの内ツイートに関連する機能を一覧にしてみました、出来る事がいっぱいあるのでこれらを組み合わせてアプリとかサービスを作る事になりますね。
用途 | エンドポイント | 必須パラメータ | リファレンス | 備考 |
ツイートをまとめて取得 | https://api.twitter.com/2/tweets | ids | GET /2/tweets | |
ツイートを1個取得 | https://api.twitter.com/2/tweets/:id | id | GET /2/tweets/:id | |
ツイートする | https://api.twitter.com/2/tweets | text | POST /2/tweets | 同じ内容はブロックされる |
ツイートを削除する | https://api.twitter.com/2/tweets/:id | id | DELETE /2/tweets/:id | |
自分と自分がフォローしているユーザーの最近のツイートをまとめて返す | https://api.twitter.com/2/users/:id/timelines/reverse_chronological | id | GET /2/users/:id/timelines/reverse_chronological | |
ユーザーのツイートタイムライン | https://api.twitter.com/2/users/:id/tweets | id | GET /2/users/:id/tweets | |
ユーザー言及タイムライン | https://api.twitter.com/2/users/:id/mentions | id | GET /2/users/:id/mentions | |
過去 7 日間に公開されたツイートを検索する | https://api.twitter.com/2/tweets/search/recent | query | GET /2/tweets/search/recent | |
すべてのツイートを検索する | https://api.twitter.com/2/tweets/search/all | query | GET /2/tweets/search/all | Academic Researchレベルのみ |
過去 7 日間のクエリに一致するツイートの数 | https://api.twitter.com/2/tweets/counts/recent | query | GET /2/tweets/counts/recent | |
クエリに一致するすべてのツイートの数 | https://api.twitter.com/2/tweets/counts/all | query | GET /2/tweets/counts/all | Academic Researchレベルのみ |
ストリームからルールを追加または削除する | https://api.twitter.com/2/tweets/search/stream/rules | add、add.value、delete、delete.ids | POST /2/tweets/search/stream/rules | |
ストリームのルールを取得する | https://api.twitter.com/2/tweets/search/stream/rules | なし | GET /2/tweets/search/stream/rules | |
ストリームに接続する | https://api.twitter.com/2/tweets/search/stream | なし | GET /2/tweets/search/stream | |
全ツイートの1%をリアルタイムで取得 | https://api.twitter.com/2/tweets/sample/stream | なし | GET /2/tweets/sample/stream | |
ツイートをRTしたユーザー一覧 | https://api.twitter.com/2/tweets/:id/retweeted_by | id | GET /2/tweets/:id/retweeted_by | |
RTする | https://api.twitter.com/2/users/:id/retweets | id、tweet_id | POST /2/users/:id/retweets | |
RTを削除 | https://api.twitter.com/2/users/:id/retweets/:source_tweet_id | id、source_tweet_id | DELETE /2/users/:id/retweets/:source_tweet_id | |
引用RT | https://api.twitter.com/2/tweets/:id/quote_tweets | id | GET /2/tweets/:id/quote_tweets | |
特定のツイートにいいねしたユーザーの一覧を取得 | https://api.twitter.com/2/tweets/:id/liking_users | id | GET /2/tweets/:id/liking_users | |
特定のユーザーがいいねしたツイートの一覧を取得 | https://api.twitter.com/2/users/:id/liked_tweets | id | GET /2/users/:id/liked_tweets | |
いいねする | https://api.twitter.com/2/users/:id/likes | id、tweet_id | POST /2/users/:id/likes | |
いいねの削除 | https://api.twitter.com/2/users/:id/likes/:tweet_id | id、tweet_id | DELETE /2/users/:id/likes/:tweet_id | |
ユーザーのブックマークを検索 | https://api.twitter.com/2/users/:id/bookmarks | id | GET /2/users/:id/bookmarks | |
ブックマークする | https://api.twitter.com/2/users/:id/bookmarks | id、tweet_id | POST /2/users/:id/bookmarks | |
ブックマークを削除する | https://api.twitter.com/2/users/:id/bookmarks/:tweet_id | id、tweet_id | DELETE /2/users/:id/bookmarks/:tweet_id | |
ツイートの返信を非表示 | https://api.twitter.com/2/tweets/:id/hidden | id、hidden | PUT /2/tweets/:id/hidden | |
コロナに関するストリーム | https://api.twitter.com/labs/1/tweets/stream/covid19 | partition | GET /labs/1/tweets/stream/covid19 | 新規受付停止? |
他にもユーザー情報・スペース・リストに関するデータも上記のツイートと同じように入出力が出来ます。全部挙げると膨大な数になっちゃいますし、利用頻度の高そうなツイート回りの機能をピックアップして解説してみます。
TwitterOAuthでtwitterAPIv2を実行するコピペコード
twitterAPIのユースケースを確認した所で、次はこれらの機能をtwitteroauthで実行するためのサンプルスクリプトをまとめてみます。最初の基本形がコピペで使えればそこからの肉付けは難しくないので、とっかかりの参考に使って下さい。
ツイートの取得
リクエストパラメータidsに取得したいツイートのIDを文字列で入れて、tweetsエンドポイントにGETします。
1個だけ取得する
<?php
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$CONSUMER_KEY = 'APIキー';
$CONSUMER_SECRET = 'APIキーシークレット';
$access_token = 'アクセストークン';
$access_token_secret = 'アクセストークンシークレット';
$connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, $access_token, $access_token_secret);
$connection->setApiVersion('2');
$response = $connection->get('tweets', ['ids' => '1509206476874784769']);
var_dump($response);
複数取得する
ツイートを複数取得する場合はカンマ区切りでIDを付与します、カンマ後にスペース入れるとエラーになります。
<?php
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$CONSUMER_KEY = 'APIキー';
$CONSUMER_SECRET = 'APIキーシークレット';
$access_token = 'アクセストークン';
$access_token_secret = 'アクセストークンシークレット';
$connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, $access_token, $access_token_secret);
$connection->setApiVersion('2');
$response = $connection->get('tweets', ['ids' => '1509206476874784769,1509951255388504066,1540058653155278849']);
var_dump($response);
ツイートする
リクエストパラメータtextにツイートしたい文字列を入れて、tweetsエンドポイントにPOSTします。
テキストのみ
<?php
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$CONSUMER_KEY = 'APIキー';
$CONSUMER_SECRET = 'APIキーシークレット';
$access_token = 'アクセストークン';
$access_token_secret = 'アクセストークンシークレット';
$connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, $access_token, $access_token_secret);
$connection->setApiVersion('2');
$response = $connection->post('tweets', ['text' => '本日のテスト'], true);
var_dump($response);
画像・動画を付けてツイートする
デフォルトのEssentialレベルはv1.1のメディアアップロードが使えない制限が掛かっており、ツイートに画像・動画を付けるためには審査を突破してアクセスレベルをElevated以上に上げる必要があります。なので申請前のデベロッパーアカウントでは下記のコピペスクリプトは動きません。
v2のメディアアップロードがリリースされたとしてもEssentialレベルでも使わせてくれる保証は今の所ないので、画像・動画をツイートしたい方はElevatedへの申請を試した方がいいっぽいですね。
<?php
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$CONSUMER_KEY = 'APIキー';
$CONSUMER_SECRET = 'APIキーシークレット';
$access_token = 'アクセストークン';
$access_token_secret = 'アクセストークンシークレット';
$connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, $access_token, $access_token_secret);
$media1 = $connection->upload('media/upload', ['media' => './a.png']);
$media2 = $connection->upload('media/upload', ['media' => './b.png']);
$parameters = [
'status' => 'テスト投稿',
'media_ids' => implode(',', [$media1->media_id_string, $media2->media_id_string])
];
$response = $connection->post('statuses/update', $parameters);
var_dump($response);
ツイートを削除する
tweetsエンドポイントにdeleteするだけのハズなんですが、idパラメータで上手く設定できなかったので削除対象のツイートIDを変数で用意してエンドポイントに直接くっ付けました。
<?php
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$CONSUMER_KEY = 'APIキー';
$CONSUMER_SECRET = 'APIキーシークレット';
$access_token = 'アクセストークン';
$access_token_secret = 'アクセストークンシークレット';
$connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, $access_token, $access_token_secret);
$connection->setApiVersion('2');
$delete_tweet_id = 'ツイートID';
$response = $connection->delete('tweets/'.$delete_tweet_id);
var_dump($response);
タイムラインの取得
3パターンあるので好きなエンドポイントにユーザーIDを付与してgetします。
通常のタイムライン
<?php
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$CONSUMER_KEY = 'APIキー';
$CONSUMER_SECRET = 'APIキーシークレット';
$access_token = 'アクセストークン';
$access_token_secret = 'アクセストークンシークレット';
$connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, $access_token, $access_token_secret);
$connection->setApiVersion('2');
$user_id = 'ユーザーID';
$response = $connection->get('users/'.$user_id.'/timelines/reverse_chronological');
var_dump($response);
ユーザーのツイートタイムライン
<?php
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$CONSUMER_KEY = 'APIキー';
$CONSUMER_SECRET = 'APIキーシークレット';
$access_token = 'アクセストークン';
$access_token_secret = 'アクセストークンシークレット';
$connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, $access_token, $access_token_secret);
$connection->setApiVersion('2');
$user_id = 'ユーザーID';
$response = $connection->get('users/'.$user_id.'/tweets');
var_dump($response);
ユーザー言及タイムライン
<?php
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$CONSUMER_KEY = 'APIキー';
$CONSUMER_SECRET = 'APIキーシークレット';
$access_token = 'アクセストークン';
$access_token_secret = 'アクセストークンシークレット';
$connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, $access_token, $access_token_secret);
$connection->setApiVersion('2');
$user_id = 'ユーザーID';
$response = $connection->get('users/'.$user_id.'/mentions');
var_dump($response);
ツイートの検索
tweets/search/recentエンドポイントにqueryパラメータを持ってgetします、取得できる期間は過去7日分のtweetのみです。すべての過去データにアクセスするためには「Academic Research」という学術研究目的のアカウントレベルを取得する必要があります。
queryには複雑な検索条件を指定できるので結果を絞りたい方は公式のビルドガイドを読んでみて下さい。
<?php
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$CONSUMER_KEY = 'APIキー';
$CONSUMER_SECRET = 'APIキーシークレット';
$access_token = 'アクセストークン';
$access_token_secret = 'アクセストークンシークレット';
$connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, $access_token, $access_token_secret);
$connection->setApiVersion('2');
$query = '飯テロ';
$response = $connection->get('tweets/search/recent', ['query' => $query]);
var_dump($response);
ツイート数のカウント
この機能はoauth1.0に対応していないのでoauth2.0で接続します。あとはtweets/counts/recentエンドポイントにqueryパラメータを持ってgetするだけです。デフォルトでは1時毎の集計っぽいので、必要であれば公式のビルトガイドでqueryで絞り方を調整して下さい。
<?php
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$CONSUMER_KEY = 'APIキー';
$CONSUMER_SECRET = 'APIキーシークレット';
$access_token = 'アクセストークン';
$access_token_secret = 'アクセストークンシークレット';
$oauth = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET);
$accessToken = $oauth->oauth2('oauth2/token', ['grant_type' => 'client_credentials']);
$connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, null, $accessToken->access_token);
$connection->setApiVersion('2');
$query = '飯テロ';
$response = $connection->get('tweets/counts/recent', ['query' => $query]);
var_dump($response);
ストリーム
twitteroauthはストリーム未対応みたいです、残念。何か作りたい時は自前でコーディングするしかないですね。
RT
tweets/:id/retweeted_byエンドポイントにtweetIDを持ってgetするだけ。
ツイートをRTしたユーザー一覧
<?php
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$CONSUMER_KEY = 'APIキー';
$CONSUMER_SECRET = 'APIキーシークレット';
$access_token = 'アクセストークン';
$access_token_secret = 'アクセストークンシークレット';
$connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, $access_token, $access_token_secret);
$connection->setApiVersion('2');
$tweet_id = 'ツイートID';
$response = $connection->get('tweets/'.$tweet_id.'/retweeted_by');
var_dump($response);
RTする
<?php
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$CONSUMER_KEY = 'APIキー';
$CONSUMER_SECRET = 'APIキーシークレット';
$access_token = 'アクセストークン';
$access_token_secret = 'アクセストークンシークレット';
$connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, $access_token, $access_token_secret);
$connection->setApiVersion('2');
$user_id = 'ユーザーID';
$tweet_id = 'ツイートID';
$response = $connection->post('users/'.$user_id.'/retweets', ['tweet_id' => $tweet_id], true);
var_dump($response);
引用RTする
引用RTは通常ツイートのtextパラメータに引用したいツイートのURLをくっ付けるだけでOKです。
<?php
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$CONSUMER_KEY = 'APIキー';
$CONSUMER_SECRET = 'APIキーシークレット';
$access_token = 'アクセストークン';
$access_token_secret = 'アクセストークンシークレット';
$connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, $access_token, $access_token_secret);
$connection->setApiVersion('2');
$quote_tweet_url = '引用したいツイートのURL';
$response = $connection->post('tweets', ['text' => '本日のテスト'.$quote_tweet_url], true);
var_dump($response);
RTを削除
<?php
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$CONSUMER_KEY = 'APIキー';
$CONSUMER_SECRET = 'APIキーシークレット';
$access_token = 'アクセストークン';
$access_token_secret = 'アクセストークンシークレット';
$connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, $access_token, $access_token_secret);
$connection->setApiVersion('2');
$user_id = 'ユーザーID';
$rt_id = '引用したツイートのID';
$response = $connection->delete('users/'.$user_id.'/retweets/'.$rt_id);
var_dump($response);
引用RTの取得
<?php
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$CONSUMER_KEY = 'APIキー';
$CONSUMER_SECRET = 'APIキーシークレット';
$access_token = 'アクセストークン';
$access_token_secret = 'アクセストークンシークレット';
$connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, $access_token, $access_token_secret);
$connection->setApiVersion('2');
$quote_rt_id = '引用したツイートのID';
$response = $connection->get('tweets/'.$quote_rt_id.'/quote_tweets');
var_dump($response);
いいね
特定のツイートにいいねしたユーザーの一覧を取得
<?php
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$CONSUMER_KEY = 'APIキー';
$CONSUMER_SECRET = 'APIキーシークレット';
$access_token = 'アクセストークン';
$access_token_secret = 'アクセストークンシークレット';
$connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, $access_token, $access_token_secret);
$connection->setApiVersion('2');
$tweet_id = 'ツイートID';
$response = $connection->get('tweets/'.$tweet_id.'/liking_users');
var_dump($response);
特定のユーザーがいいねしたツイートの一覧を取得
他人のIDでも出来るので誰が何のツイートにいいねしたか分かっちゃう。
<?php
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$CONSUMER_KEY = 'APIキー';
$CONSUMER_SECRET = 'APIキーシークレット';
$access_token = 'アクセストークン';
$access_token_secret = 'アクセストークンシークレット';
$connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, $access_token, $access_token_secret);
$connection->setApiVersion('2');
$user_id = 'ユーザーID';
$response = $connection->get('users/'.$user_id.'/liked_tweets');
var_dump($response);
いいねする
<?php
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$CONSUMER_KEY = 'APIキー';
$CONSUMER_SECRET = 'APIキーシークレット';
$access_token = 'アクセストークン';
$access_token_secret = 'アクセストークンシークレット';
$connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, $access_token, $access_token_secret);
$connection->setApiVersion('2');
$user_id = 'ユーザーID';
$tweet_id = 'ツイートID';
$response = $connection->post('users/'.$user_id.'/likes', ['tweet_id' => $tweet_id], true );
var_dump($response);
いいねの削除
<?php
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$CONSUMER_KEY = 'APIキー';
$CONSUMER_SECRET = 'APIキーシークレット';
$access_token = 'アクセストークン';
$access_token_secret = 'アクセストークンシークレット';
$connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, $access_token, $access_token_secret);
$connection->setApiVersion('2');
$user_id = 'ユーザーID';
$tweet_id = 'ツイートID';
$response = $connection->delete('users/'.$user_id.'/likes/'.$tweet_id);
var_dump($response);
ブクマ
twitterAPIv2のブクマ回りの機能はoauth2.0 PKCEのみで、twitteroauthはoauth2.0に基本対応していません。残念ながらブクマ回りをAPIから触る際は自前でコーディングが必要です。
ツイートの返信を非表示
<?php
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
$CONSUMER_KEY = 'APIキー';
$CONSUMER_SECRET = 'APIキーシークレット';
$access_token = 'アクセストークン';
$access_token_secret = 'アクセストークンシークレット';
$connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, $access_token, $access_token_secret);
$connection->setApiVersion('2');
$tweet_id = 'ツイートID'; //指定できるIDは自分のツイートへのレスのみ
$hidden = 'true'; //trueで非表示、falseで表示
$response = $connection->put('tweets/'.$tweet_id.'/hidden', ['hidden' => $hidden], true);
var_dump($response);
コロナに関するストリーム
twitteroauthはストリーム未対応です。
まとめ
むちゃくちゃ長い記事になっちゃいましたが、twitterAPIv2の申請からコピペコードまで一通りまとめてみました。
今回紹介したツイート回りの機能以外にも、ユーザー情報回りをAPIで操作・取得する機能もありますが今回はくたびれちゃったのでここまでにしておきます((+_+))
個人開発プログラマーを応援するメンバーシップを始めました('ω')ノ
質問・要望・共同作業など、みんなのやりたい事をスマイルがお手伝いします。立ち上げたばかりでよく分かってないので、とりあえず何でもありやってみます。
コメント