使用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);
广告
将在 10 秒后关闭
bannerAds