MENU

【PHP】TwiterOAuthを使って画像付きツイートをする方法

前回の記事でPHPからTwitterOAuthを使ってツイートする方法を紹介しました。

今回はそこからちょっとステップアップして画像付きのツイートを行う方法を紹介します。

目次

目次

前提

前回までの記事でかいた以下を完了させて置く必要があります。

  1. Twitter APIに登録する
  2. Twitter APIからAPI Key、API Key Secretを取得する
  3. TwitterOAuthのインストール

上記3点の方法は下記の記事で説明しているので、そちらを参照してください。

サンプルプログラム

手順としては以下の通りです。

  1. TwitterOAuthライブラリの読み込み
  2. APIキーやアクセストークンの取得
    ※サンプルコードはいずれも定数としていますが、Twitter連携でログインする場合はアクセストークンはDBに保管するなどして、そこから取得する必要があります。
  3. Twitter接続。
  4. 画像をアップロードし、画像のIDを取得
  5. ツイート部分のパラメータ編集
    ※取得した画像のIDを使用する
  6. ツイート
// ①TwitterOAuthライブラリの読み込み
require_once('vendor/autoload.php');
use Abraham\TwitterOAuth\TwitterOAuth;

// ②APIキーやアクセストークンの取得
define('consumer_key', 'APIキー');
define('consumer_secret', 'API シークレット');
define('access_token', 'アクセストークン');
define('access_token_secret', 'アクセストークン シークレット');

// ③Twitter接続
$twiConnct = new TwitterOAuth(Consumer_Key, Consumer_Secret, access_token, access_token_secret);

// ④画像をアップロードし、画像のIDを取得
$imageId = $twiConnct->upload('media/upload', ['media' => '画像ファイルのパス');
// ⑤ツイート部分のパラメータ編集
$tweet = [
  'status' => ’ツイートの内容',  // ツイートの内容(テキスト部分)
  'media_ids' => implode(',', [  // 画像の指定
    $imageId->media_id_string
   ])
  ];

// ⑥ツイート
$res = $twiConnct->post("statuses/update", $tweet)

順番に見ていきます。

TwitterOAuthライブラリの読み込み

基本であるTwitterOAuthのライブラリを読み込みます。

composerで最新(2020年4月時点)ではサンプルコードのパスで問題ないはずです。

APIキーやアクセストークンの取得

API Key、API Key Secret、Access Token、Access Token Secretを取得します。

サンプルコードでは定数に記述するようにしていますが、Access Token、Access Token Secretはログイン(ツイート)するユーザーによって変わります。

ですので、ログイン機能をTwitterと連携させる場合には、データベース等にユーザー事にAccess Token、Access Token Secretを管理する必要があります。

Twitter接続

これもお決まりの文房ですね。

API Key、API Key Secret、Access Token、Access Token Secretを指定してTwitterOAuthのインスタンスを作成することでTwitterに接続できます。

画像をアップロードし、画像のIDを取得

Twitterに画像付きのツイートをする場合にはまず画像のアップロードをする必要があります。

これは決まり文句でサンプルコードの「画像ファイルのパス」の部分を変更すればOKです。

ちなにここで指定した「画像ファイルのパス」にファイルが存在しない場合はエラーとなりますあが、テキスト部分はそのままツイートされます。

個人的には内部でエラーになってほしくないので、ツイートする内容に画像が含まれるかどうかを事前に判断して、画像をアップロードするかどうか処理を分けたいところです。

ツイート部分のパラメータ編集

これも決まり文句ですね。

複数の画像もアップロードすることができます。

複数アップロードする場合のサンプルコードは以下の通りです。

// ④画像をアップロードし、画像のIDを取得 
$imageId1 = $twiConnct->upload('media/upload', ['media' => '画像ファイルのパス');
$imageId2 = $twiConnct->upload('media/upload', ['media' => '画像ファイルのパス');

// ⑤ツイート部分のパラメータ編集
$parameters = [
  'status' => 'ツイートの内容',
  'media_ids' => implode(',', [
     $imageId1->media_id_string,  // この部分をアップロードした画像分記述する
     $imageId2->media_id_string   // この部分をアップロードした画像分記述する
    ])
];

ツイート

ここも決まり文句になります。

これを記述すると実際にツイートされることになります。

僕のアプリケーション「katwibo」から送信されていますね。

まとめ

いかがだったでしょうか?

テキストのみでツイートする場合に比べると画像のアップロードとパラメーターの指定部分が異なるだけで、大きく変わりません。

異なる部分もほぼ決まり文句なのでさほど難しくはないと思います。

個人的にはパラメータの連想配列の指定がごちゃっとしてるので、そこをなんとかできないかと思ってはいますけど。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ソフトウェア会社(SIer)で10年以上勤務のシステムエンジニア|ポケットWiFi使用歴2年以上|ポケットWiFi+αで快適でお得なインターネット環境を構築するための情報を発信|その他、IT情報やWebサービス、アプリ、ガジェットなどの情報を発信|自分と他の人のカバンの中身を紹介するメディア「カバンの中身ラボ(https://kaban-no-nakami-labo.com/)」も運営しています。
ポケットWiFi選びに迷ったらTwitter、お問合せフォームからご連絡ください。

コメント

コメントする

目次