Twitter APIがsuspendedになってる場合の対処法
Twitter Portalを開き、アプリの状態を確認します。
2023年5月のタイミングでsuspendedになっている場合、APIの無料使用条件に対応する状態にアプリがなっていないので規約違反となっている状態です。サポートチケットなどを出す必要はありません。
まずはアプリを一つだけ残して削除します。
その後、Productsを開き、「Downgrade」のボタンを押します。これで無料プランの状態(月1500ツイートまで)になり、Suspendedが解除されます。
Twitter APIバージョン1.1→2.0に対応したTwitterOAuthを導入
10年間同じバージョンのTwitterOAuthライブラリ(非Composer版)を使っていたのですが、バージョン1.1でツイート出来なくなったようなので新しいバージョンのTwitterOAuthを入れてみました(環境はCentOS7.9)。
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm yum install composer composer require abraham/twitteroauth
PHPソースはこんな感じでシンプルになります。
<?php require "vendor/autoload.php"; use Abraham\TwitterOAuth\TwitterOAuth; $apiKey= 'APIキー'; $apiSecret= 'APIキーシークレット'; $accessToken= 'アクセストークン'; $accessTokenSecret= 'アクセストークンシークレット'; $connection = new TwitterOAuth($apiKey, $apiSecret, $accessToken, $accessTokenSecret); $connection->setApiVersion('2'); $response = $connection->post("tweets", ["text" => $tweet_text], true); # trueでjsonで結果が返る
もし「Call to undefined method Abraham\TwitterOAuth\TwitterOAuth::setApiVersion()」と出た場合はComposerでインストールされたTwitterOAuthのバージョンが低いです。
(その場合サーバのPHPのバージョンも低いので、gitから直接最新版をDLして動かしても、「php nullable syntax error, unexpected ?」とかが出て動きません)。
PHP8以降が現時点のTwitterOAuth最新版の動作環境なので、ComposerでインストールできるようにPHP8を入れます。
yum install php80-php # php80-php以外のライブラリはお好みで。yum list installed | grep phpで検索して該当ライブラリと同じもののphp80版をインストール。自鯖ではこんな感じに # yum install php80-php php80-php-cli php80-php-common php80-php-devel php80-php-fpm php80-php-gd php80-php-json php80-php-mbstring php80-php-mysqlnd php80-php-pdo php80-php-pear php80-php-pecl-apcu php80-php-pecl-apcu-devel php80-php-pecl-mysql php80-php-process php80-php-xml php80-runtime which php80 #php80の場所確認 ln -sf /usr/bin/php80 /usr/bin/php #phpコマンドで動くように composer update abraham/twitteroauth
無料プランでは月1500ツイートまでなので、30分に1度ツイートにすれば、30日で1440ツイートになり丁度いいです。
コメント