Twitter の Media 付き投稿 にトライ その3

うまくいかないので、 Twitter側の APIを疑ってみることにしました。



まず、 16x16 のGIF を送ります。

POST http://upload.twitter.com/1/statuses/update_with_media.xml HTTP/1.1
User-Agent: Mozilla/5.0 (Windows) Mo-Footer v0.8
Host: upload.twitter.com
Accept: /
Content-Type: application/x-www-form-urlencoded
Content-Length: 730

media%5B%5D=GIF89a%10%00%10%00%B3%00%00%00%00%00%7F%00%00%00%7F%00%7F%7F%00%00%00%7F%7F%00%7F%00%7F%7F%7F%7F%7F%C0%C0%C0%FF%00%00%00%FF%00%FF%FF%00%00%00%FF%FF%00%FF%00%FF%FF%FF%FF%FF%21%F9%04%00%00%00%00%00%2C%00%00%00%00%10%00%10%00%00%04G%10H%20%AA%088%98m%26%B5%99%C6y%D6%95q%DDT%86h%E1%16G%7C%1041%DC%C3%0B%CB%B5%8D%EB%B2Y%0D%97%7B%05%7BDb%2FXR%D6%98%16%27%0DZ%91%12%A8%02TH%E7%D1f%B8%13%2F%06%2C%11%07%C8%80%08%00%3B&oauth_consumer_key=vqxwinNHu9l3Ki5Wp68A&oauth_nonce=bmaTlWMXnz4oz7h83OO2&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1314338112&oauth_token=47556511-oPvoix2exwzZxzKD6jRfJ9B8bLZuoTlHrK8r0gVfW&oauth_version=1.0&status=This%20is%20an%20image%20upload%20test.&oauth_signature=uHIYK8VYJBphhaZKa99Ou7muwA8%3DL

エラーがかえってきました。

HTTP/1.1 401 Unauthorized
<?xml version="1.0" encoding="UTF-8"?>
<hash>
  <request>/1/statuses/update_with_media.xml</request>
   <error>Could not authenticate with OAuth.</error>
</hash>

GIFデータを少しいじります。

POST http://upload.twitter.com/1/statuses/update_with_media.xml HTTP/1.1
User-Agent: Mozilla/5.0 (Windows) Mo-Footer v0.8
Host: upload.twitter.com
Accept: /
Content-Type: application/x-www-form-urlencoded
Content-Length: 729
media%5B%5D=GIF89a%10%00%10%00%B3%00%00%00%00%00%7F%00%00%00%7F%00%7F%7F%00%00%00%7F%7F%00%7F%00%7F%7F%7F%7F%7F%C0%C0%C0%FF%00%00%00%FF%00%FF%FF%00%00%00%FF%FF%00%FF%00%FF%FF%FF%FF%FF%21%F9%04%00%00%00%00%00%2C%00%00%00%00%10%00%10%00%00%04G%10H%20%AA%088%98m%26%B5%99Fy%D6%95q%3DT%86ha%16G%7C%1041%DC%C3%0B%CB%B5%8Dk%B2Y%0D%97%7B%05%7BDb%2FXR%D6%98%16%27%0DZ%91%12%A8%02THwQf%B8%13%2F%06%2C%11%07%C8%80%08%00%3B&oauth_consumer_key=vqxwinNHu9l3Ki5Wp68A&oauth_nonce=T7FGw4XBIFfMyvU5cd73qSdZZ&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1314338138&oauth_token=47556511-oPvoix2exwzZxzKD6jRfJ9B8bLZuoTlHrK8r0gVfW&oauth_version=1.0&status=This%20is%20an%20image%20upload%20test.&oauth_signature=Z3lZEZNl7ngoOsXef%2Fpm7Fb%2F4S4%3DL

エラーメッセージが変わりました。
エラーですが、実は投稿に成功しています。

HTTP/1.1 404 Not Found

<?xml version="1.0" encoding="UTF-8"?>
<hash>
  <request>/1/statuses/update_with_media.xml</request>
  <error>Not found</error>
</hash>

更にGIFデータをいじります。

POST http://upload.twitter.com/1/statuses/update_with_media.xml HTTP/1.1
User-Agent: Mozilla/5.0 (Windows) Mo-Footer v0.8
Host: upload.twitter.com
Accept: /
Content-Type: application/x-www-form-urlencoded
Content-Length: 732

media%5B%5D=GIF89a%10%00%10%00%B3%00%00%00%00%00%7F%00%00%00%7F%00%7F%7F%00%00%00%7F%7F%00%7F%00%7F%7F%7F%7F%7F%C0%C0%C0%FF%00%00%00%FF%00%FF%FF%00%00%00%FF%FF%00%FF%00%FF%FF%FF%FF%FF%21%F9%04%00%00%00%00%00%2C%00%00%00%00%10%00%10%00%00%04G%10H%20%AA%088%98m%26%7F%99Fy%7F%95q%3DT%86ha%16G%7C%1041%DC%C3%0B%CB%7F%8Dk%7FY%0D%7F%7B%05%7BDb%2FXR%7F%7F%16%27%0DZ%91%12%A8%02THwQf%B8%13%2F%06%2C%11%07%C8%80%08%00%3B&oauth_consumer_key=vqxwinNHu9l3Ki5Wp68A&oauth_nonce=xak4cGmir5Io2ByhhpAytVfriJj6&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1314338854&oauth_token=47556511-oPvoix2exwzZxzKD6jRfJ9B8bLZuoTlHrK8r0gVfW&oauth_version=1.0&status=This%20is%20an%20image%20upload%20test.&oauth_signature=7kw%2FPktNk22gXgeO9BI14YF%2BPlk%3DL

リクエストが、なんと通りました。

HTTP/1.1 200 OK

<?xml version="1.0" encoding="UTF-8"?>
<status>
  <created_at>Fri Aug 26 06:07:35 +0000 2011</created_at>
  <id>106971026499436544</id>
  <text>This is an image upload test. <a href="http://t.co/XtSMgGN</text>
" title="http://t.co/XtSMgGN</text>
" rel="nofollow">http://t.co/XtSMgGN</text>
</a>  <source>&lt;a href=&quot;http://blog.livedoor.jp/blackwingcat/archives/1394816.html&quot; rel=&quot;nofollow&quot;&gt;Mo-Footer&lt;/a&gt;</source>
  <truncated>false</truncated>
  <favorited>false</favorited>
  <in_reply_to_status_id></in_reply_to_status_id>
  <in_reply_to_user_id></in_reply_to_user_id>
  <in_reply_to_screen_name></in_reply_to_screen_name>
  <retweet_count>0</retweet_count>
  <retweeted>false</retweeted>
  <user>
    <id>47556511</id>
    <name>&#40658;&#32764;&#29483;</name>
    <screen_name>BlackWingCat</screen_name>
    <location>&#31070;&#22856;&#24029;&#30476;</location>
    <description>I write blog news about windows 2000 everyday.
&#22235;&#33865;&#12398;&#27665;</description>
    <profile_image_url>http://a2.twimg.com/profile_images/641484625/blackwingcat_60P_normal.jpg</profile_image_url>
    <profile_image_url_https>https://si0.twimg.com/profile_images/641484625/blackwingcat_60P_normal.jpg</profile_image_url_https>
    <url>http://blog.livedoor.jp/blackwingcat</url>
    <protected>false</protected>
    <followers_count>637</followers_count>
    <profile_background_color>1A1B1F</profile_background_color>
    <profile_text_color>201236</profile_text_color>
    <profile_link_color>132a9c</profile_link_color>
    <profile_sidebar_fill_color>ffffff</profile_sidebar_fill_color>
    <profile_sidebar_border_color>10141c</profile_sidebar_border_color>
    <friends_count>239</friends_count>
    <created_at>Tue Jun 16 05:57:53 +0000 2009</created_at>
    <favourites_count>86</favourites_count>
    <utc_offset>32400</utc_offset>
    <time_zone>Tokyo</time_zone>

    <profile_background_image_url>http://a1.twimg.com/images/themes/theme9/bg.gif</profile_background_image_url>
    <profile_background_image_url_https>https://si0.twimg.com/images/themes/theme9/bg.gif</profile_background_image_url_https>
    <profile_background_tile>false</profile_background_tile>
    <profile_use_background_image>true</profile_use_background_image>
    <notifications>false</notifications>
    <geo_enabled>true</geo_enabled>
    <verified>false</verified>
    <following>false</following>
    <statuses_count>17948</statuses_count>
    <lang>ja</lang>
    <contributors_enabled>false</contributors_enabled>
    <follow_request_sent>false</follow_request_sent>
    <listed_count>81</listed_count>
    <show_all_inline_media>false</show_all_inline_media>
    <default_profile>false</default_profile>
    <default_profile_image>false</default_profile_image>
    <is_translator>false</is_translator>
  </user>
  <geo/>
  <coordinates/>
  <place/>
  <possibly_sensitive>false</possibly_sensitive>
  <contributors/>
  <entities>
    <user_mentions/>
    <media>
      <creative end="49" start="30">
        <type>photo</type>
        <sizes>
          <small>
            <w>16</w>
            <h>16</h>
            <resize>fit</resize>
          </small>
          <large>
          </large>
          <medium>
          </medium>
          <thumb>
            <resize>crop</resize>
          </thumb>
        </sizes>
        <media_url>http://p.twimg.com/AXwJlPPCAAEzJg9.gif</media_url>
        <url>http://t.co/XtSMgGN</url>
        <id_str>106971026499436545</id_str>
        <display_url>pic.twitter.com/XtSMgGN</display_url>
        <id>106971026499436545</id>
        <media_url_https>https://p.twimg.com/AXwJlPPCAAEzJg9.gif</media_url_https>
        <expanded_url>http://twitter.com/BlackWingCat/status/106971026499436544/photo/1</expanded_url>
      </creative>
    </media>
    <urls/>
    <hashtags/>
  </entities>
</status>

URLエンコードを復号して、サーバー側でUNICODE 文字配列に代入して処理しようとしているのではないかなと思うわけです。(あくまで推測ですが)

この方法での実装だと、どうも不安定ですね。
APIのバグみたいなので、直るまで待つのがよいのかも。

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です