使用PHP通过dg/twitter-php库进行带图片的推特发布
准备
-
- github から gd/twitter-php をインストールする(この記事時点では released version 3.5)
Application Management ページでアプリケーションを登録して、Keys and AccessToken を発行する
发推文
requre_once 'twitter.class.php';
// 各変数値設定はここでは省略してます
$twitter = new Twitter($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret);
$result = $twitter->send('I am fine today.');
var_dump($result);
尽管send()方法的第二个参数可以支持带媒体的推文,但因为statuses/update_with_media已被废弃,所以在这里只测试纯文本推文。
使用带有图片的方式发布推文
首先,使用带有图片的推文需要执行 media/upload,从响应中获取 media_id,然后执行 statuses/update 进行发布。
上传要逐张进行。
最多可以指定四张图像,并通过逗号分隔,在media_ids参数中指定获取到的media_id。
下面是一个最低限度的实现示例,省略了异常处理等。
/**
* 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);