準備
- 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);