10
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-08-07

準備

  • 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);
10
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?