Я пытаюсь опубликовать сообщение с изображением в Twitter через PHP и cURL. Он работает для сообщения, но я не знаю, как добавить к нему изображение.
Из документации :
В отличие от статусов POST / обновления, этот метод ожидает необработанных многостраничных данных. В Content-Type вашего запроса POST должен быть установлен параметр multipart / form-data с параметром media []
Это PHP:
<?php class Tweet { public $url = 'https://api.twitter.com/1.1/statuses/update_with_media.json'; function the_nonce(){ $nonce = base64_encode(uniqid()); $nonce = preg_replace('~[\W]~','',$nonce); return $nonce; } function get_DST($status){ $url = $this->url; $consumer_key = "[removed]"; $nonce = $this->the_nonce(); $sig_method = 'HMAC-SHA1'; $timestamp = time(); $version = "1.0"; $token = "[removed]"; $access_secret = "[removed]"; $consumer_secret = "[removed]"; $param_string = 'oauth_consumer_key='.$consumer_key. '&oauth_nonce='.$nonce. '&oauth_signature_method='.$sig_method. '&oauth_timestamp='.$timestamp. '&oauth_token='.$token. '&oauth_version='.$version. '&status='.rawurlencode($status); $sig_base_string = 'POST&'.rawurlencode($url).'&'.rawurlencode($param_string); $sig_key = rawurlencode($consumer_secret).'&'.rawurlencode($access_secret); $tweet_sig = base64_encode(hash_hmac('sha1', $sig_base_string, $sig_key, true)); $DST = 'OAuth oauth_consumer_key="'.rawurlencode($consumer_key).'",'. 'oauth_nonce="'.rawurlencode($nonce).'",'. 'oauth_signature="'.rawurlencode($tweet_sig).'",'. 'oauth_signature_method="HMAC-SHA1",'. 'oauth_timestamp="'.rawurlencode($timestamp).'",'. 'oauth_token="'.rawurlencode($token).'",'. 'oauth_version="1.0"'; return $DST; } function set($status){ $url = $this->url; $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: ' . $this->get_DST($status))); curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, 'status='.rawurlencode($status)); curl_setopt($ch, CURLOPT_URL, $url); $result = json_decode(curl_exec($ch)); $resultString = print_r($result,true);; curl_close($ch); } $status->set("hello"); ?>
Как добавить к нему материал [] ?