php / Twitter(X)

phpからツイッターに自動投稿

phpからツイッターに自動投稿

PHPからTwitterに自動投稿するには、Twitter APIと連携する必要があります。まず、Twitter Developerアカウントを取得し、アプリを作成してAPIキーとAPIシークレットキー、アクセストークンとアクセストークンシークレットを取得します。

PHPでTwitter APIを扱うライブラリであるabraham/twitteroauthを使用することが一般的です。Composerを使ってインストールしましょう。

  1. まず、Composerがインストールされていることを確認し、プロジェクトフォルダを作成します。

csharp


composer init
  1. 次に、abraham/twitteroauthライブラリをインストールします。

bash


composer require abraham/twitteroauth
  1. post_tweet.phpというファイルを作成し、以下のコードを記述します。適切な箇所にあらかじめ取得したAPIキー、APIシークレットキー、アクセストークン、アクセストークンシークレットを記入してください。

php



<?php
require 'vendor/autoload.php';
use Abraham\TwitterOAuth\TwitterOAuth;

// あらかじめ取得した各種キー
$api_key = 'API_KEY';
$api_secret_key = 'API_SECRET_KEY';
$access_token = 'ACCESS_TOKEN';
$access_token_secret = 'ACCESS_TOKEN_SECRET';

// TwitterOAuthのインスタンスを作成
$connection = new TwitterOAuth($api_key, $api_secret_key, $access_token, $access_token_secret);

// ツイート内容
$message = 'これはテストツイートです。';

// ツイートを投稿
$status = $connection->post("statuses/update", ["status" => $message]);

// エラーがあれば表示
if ($connection->getLastHttpCode() != 200) {
    echo 'Error: ' . $status->errors[0]->message . PHP_EOL;
} else {
    echo 'Tweet posted successfully.' . PHP_EOL;
}

  1. これで準備が整いました。post_tweet.phpを実行することでTwitterに自動投稿できます。

php post_tweet.php

投稿が成功すれば、「Tweet posted successfully.」と表示され、エラーがあればエラーメッセージが表示されます。

動画と画像を含めた投稿をするには?

動画や画像を含めた投稿を行うには、まずメディアファイルをTwitterにアップロードし、その後に投稿を行う必要があります。以下の手順で行います。

以下のコードは、画像ファイルを含むツイートを投稿するサンプルです。動画ファイルをアップロードする場合は、uploadMedia() 関数内の media/upload エンドポイントを使用し、media_category パラメーターを tweet_video に設定します。

html


<?php
require 'vendor/autoload.php';
use Abraham\TwitterOAuth\TwitterOAuth;

// あらかじめ取得した各種キー
$api_key = 'API_KEY';
$api_secret_key = 'API_SECRET_KEY';
$access_token = 'ACCESS_TOKEN';
$access_token_secret = 'ACCESS_TOKEN_SECRET';

// TwitterOAuthのインスタンスを作成
$connection = new TwitterOAuth($api_key, $api_secret_key, $access_token, $access_token_secret);

// ツイート内容
$message = 'これは画像付きのテストツイートです。';

// 画像ファイルのパス
$image_path = 'path/to/your/image.jpg';

// 画像をアップロードし、メディアIDを取得
$media_id = uploadMedia($connection, $image_path);

// ツイートを投稿
$status = $connection->post("statuses/update", ["status" => $message, "media_ids" => $media_id]);

// エラーがあれば表示
if ($connection->getLastHttpCode() != 200) {
    echo 'Error: ' . $status->errors[0]->message . PHP_EOL;
} else {
    echo 'Tweet with image posted successfully.' . PHP_EOL;
}

/**
 * メディアファイルをアップロードし、メディアIDを返す
 *
 * @param TwitterOAuth $connection
 * @param string $image_path
 * @return string
 */
function uploadMedia($connection, $image_path) {
    $media = $connection->upload('media/upload', ['media' => $image_path]);
    if (isset($media->media_id_string)) {
        return $media->media_id_string;
    } else {
        echo 'Error: ' . $media->errors[0]->message . PHP_EOL;
        exit();
    }
}

画像や動画が含まれるツイートを投稿するには、$message 変数に投稿したいテキストを設定し、$image_path にアップロードしたい画像ファイルのパスを設定してください。このコードを実行すると、指定された画像を含むツイートが投稿されます。

まとめ・感想

簡単。Xではどうなのだろうか。