Twitter社の仕様変更により、これまで使用できていたTwitter API 1.0によるツイートができなくなってしまいした。川柳投稿まるせんでも使用しているさくらインターネットの環境にて、Twitter API v2によるツイートが行えるように対応をいたしました。使用言語はPHPです。
さくらインターネットでTwitter API v2を使うためには
さくらインターネットでTwitter API v2を使うためには、いくつかの前提条件があります。
PHP8.0にする必要がある
最新のTwitterOAuthを入れる必要がある
PHP8.0にする
最新のTwitterOAuthライブラリはPHPのバージョンが8以上が求められています。さくらインターネットのサーバーコントロールパネルから、PHPのバージョンを変更することができます。
最新のTwitterOAuthを入れる
さくらインターネットに、まずComposerをインストールし、これを使って最新のTwitterOAuthライブラリをインストールします。
Composerのインストール
こちらのnote記事を参考にインストールしました。手順通りで特に問題はありませんでした。
インストール場所は、/home/アカウント名/にしました。
最新のTwitterOAuthを入れる
参考にした記事には、
composer require abraham/twitteroauth
というコマンドが掲載されていますが、パスの関係で実際には下記のようなコードで実行。
php composer.phar require abraham/twitteroauth
インストール場所は同じく、/home/アカウント名/です。
Twitter API v2を使うための記述
Twitter API v2を使うためには、いくつかの記述に変更を加える必要があります。
ひとつは、v2を宣言すること。
$connection->setApiVersion("2");
もう一つは、ツイート時の命令、データがjsonになった、などの変更に対応することです。
$result = $connection->post("tweets", ["text" => "API v2のテスト"], true);
Composer CaBundle not found エラーの対応
先ほど参考にしたサイトによると、これらの更新で「Fatal error: Uncaught Error: Class “Composer\CaBundle\CaBundle” not found」のエラーが出なくなるということでしたが、更新後も相変わらずこのエラーによりツイートできない状態のまま。
TwitterOAuthを最新に更新した際に一緒にインストールされていたca-bundleが認識されていないのだと思い、該当しそうなところに対応したところ、エラーが消え、ツイートも行えるようになりました。
対象ファイル:
/home/(アカウント名)/vendor/abraham/twitteroauth/src/TwitterOAuth.php
20行目あたり
require "/home/(アカウント名)/vendor/autoload.php"; // この行を追加
use Composer\CaBundle\CaBundle;
おわりに
さくらインターネットのすべての環境に対応できるかどうかは分かりませんので、ひとつの方法として参考にしていただければと思います。ご自身の環境における作業につきましては、ご自身の責任のもと行ってください。
上記はTwitter Developer Platformにおいて適切にプロジェクトやアプリを作ってある前提です。かなり以前に作ったアプリはv1.0にしか対応していなかったようで、いったん削除をして新しく作り直してみたところ問題なく動作しました。
Twitter Developer Platformでは、無料プランを使用しています。Appは1つまで、ツイート数は月間1,500件となっています。
コメント