Edited at

PHPからdg/twitter-phpで画像付きツイート

More than 3 years have passed since last update.


準備


  • github から gd/twitter-php をインストールする(この記事時点では released version 3.5)


  • Application Management ページでアプリケーションを登録して、Keys and AccessToken を発行する


ツイートする


tweet.php

requre_once 'twitter.class.php';

// 各変数値設定はここでは省略してます
$twitter = new Twitter($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret);
$result = $twitter->send('I am fine today.');

var_dump($result);


send()でも第2引数でメディア付きツイートは対応されているが、statuses/update_with_media が deprecated なので、ここではテキストツイートのみのテストとする。


画像付きでツイートする

画像付きのツイートはまず media/upload を行いレスポンスから media_id を取得して statuses/update する流れになる。

アップロードは1枚ずつ行う。

最大4枚まで画像指定が可能で、取得した media_id をカンマ区切りで media_ids パラメータに指定する。


以下、最低限の実装例であり、例外処理などは省いてあります。


tweet_with_media.php

/**

* Parameters には media または media_data が排他で指定必須
* media の場合は RAW データ、media_data は base64_encode する
*/

$file = 'sample.png';
$media_data = base64_encode(file_get_contents($file));
// Parameters
$parameters = array('media_data' => $media_data);

/**
* 画像アップロード
* media/upload は upload.twitter.com がエンドポイントなので注意
* additional_owners を指定することで最大100人まで複数のユーザでアップロードした画像を使用可能
*/

$result = $twitter->request(
'https://upload.twitter.com/1.1/media/upload.json', // API
'POST',
$parameters
);

/**
* アップロードした画像付きツイート
* なお、都度アップロードでも構いませんが、同じ画像を何度も使う場合
* media_id を保存して再利用したほうが良さそうです
*/

$parameters = array(
'status' => 'I am fine today.',
'media_ids' => $result->media_id // アップロードレスポンスから画像の media_id を指定
);
$result= $twitter->request('statuses/update', 'POST', $parameters);