ここで解説するAPI 1は非推奨となっているため、API 1.1を使用すべきです。
メディアを添付して、認可ユーザーからツイートできます。
POST https://upload.twitter.com/1/statuses/update_with_media.format
サポートされる画像フォーマットは、
の3種類です。
アップロードできるメディアの制約は、https://api.twitter.com/1/help/configuration.xmlに情報があります。
リクエストは次のようにAuthorizationヘッダで認可情報を渡し、Content-Typeをmultipart/form-dataとします。また他のAPIと異なり、Hostをupload.twitter.comとします。
POST /1/statuses/update_with_media.json HTTP/1.1 Host: upload.twitter.com Accept: */* Authorization: OAuth oauth_version="1.0",oauth_nonce="xx",oauth_timestamp="000",oauth_consumer_key="xx",oauth_token="000-xx",oauth_signature_method="HMAC-SHA1",oauth_signature="xx" Content-Length: 123 Content-Type: multipart/form-data; boundary=----------------------------xx
パラメータ | 説明 |
---|---|
status (必須) | The text of your status update. URL encode as necessary. t.co link wrapping may affect character counts if the post contains URLs. You must additionally account for the characters_reserved_per_media per uploaded media, additionally accounting for space characters in between finalized URLs.
Note: Request the GET help/configuration endpoint to get the current |
media[] (必須) | Up to max_media_per_upload files may be specified in the request, each named media[] . Supported image formats are PNG, JPG and GIF. Animated GIFs are not supported.
Note: Request the GET help/configuration endpoint to get the current |
possibly_sensitive | Set to true for content which may not be suitable for every audience. |
in_reply_to_status_id | The ID of an existing status that the update is in reply to.
Note: This parameter will be ignored unless the author of the tweet this parameter references is mentioned within the status text. Therefore, you must include |
lat | The latitude of the location this tweet refers to. This parameter will be ignored unless it is inside the range -90.0 to +90.0 (North is positive) inclusive. It will also be ignored if there isn't a corresponding long parameter. |
long | The longitude of the location this tweet refers to. The valid ranges for longitude is -180.0 to +180.0 (East is positive) inclusive. This parameter will be ignored if outside that range, not a number, geo_enabled is disabled, or if there not a corresponding lat parameter. |
place_id | A place in the world identified by a Twitter place ID. Place IDs can be retrieved from geo/reverse_geocode. |
display_coordinates | Whether or not to put a pin on the exact coordinates a tweet has been sent from. |
非対応の画像フォーマットの送信などで送信に失敗した場合には、Error creating status.と返されます。
TwitterOAuthはファイルのアップロードに対応していないため、そのままではstatuses/update_with_mediaを使用できません。
アップロードに対応させるにはtwitteroauth.phpを修正し、認可情報をエンティティ ボディではなくヘッダーに含めるようにします。またホストを「https://upload.twitter.com/1/」に変更します。
しかしそれよりも、最初からファイルのアップロードに対応しているtmhOAuthを利用するのが簡単です。