Net::Twitter-3.13003 と Net::OAuth-0.26 でやっぱり日本語postが出来ない件 [Perl] [twitter]

| コメント(0) | トラックバック(1)

一応 前回 の続き

lestrrat さんが RT でつついてくれたお陰もあってか、
昨日(?) Net::OAuth の修正版がリリースされ、
Net::OAuthが変なdecodeをすることはなくなりました。 (0.26以降)

が、その対処方法は 「渡ってきたパラメータを適切にdecodeする」ではなく、
「パラメータは適切にdecodeされていると想定することにする」
つまり 「アプリケーション側でちゃんとdecodeしてから渡してくれよ」 というものでした。

さて、その Net::OAuth を利用している Net::Twitter ですが、
APIメソッドの入り口では頑張って各パラメタのKey/Value に対して utf8::upgrade() してる (Net::Twitter::Core::_prepare_request()/_encode_args()) んだけど、
Net::OAuthにデータを渡すために、HTTP::ResponseURI を使って
データを整形していくうちに、 肝心のデータが Net::OAuthに渡す直前には
UTF-8 octets になってしまっていました。(Net::Twitter::Core::_prepare_request() -> Net::Twitter::Role::OAuth::_add_authorization_header()/_make_oauth_request() )
# URIの方はあまり調べてないですが、少なくともHTTP::Response(のベースクラスであるHTTP::Message) は、扱うデータとして octet sequence (podでは string in bytes って書いてある)を要求しているし、decoded string が来た場合はわざわざ utf8::downgrade() してる。

当然、Net::OAuth は間違ったデータでもってsignatureを作成し、結果、日本語を含むpostを投げると 前回のと同様、 twitterサーバから 401 が返ってくることになります。

という問題を解決するためのパッチを作って RTで報告しておきました ので、よろしく(何

トラックバック(1)

トラックバックURL: http://floralcompany.jp/mt/mt-tb.cgi/216

-> 前回 自分がRTに投げたパッチとは違う形(かつもっとsimple)ではありますが、Net::Twitter-3.13004 にて、update APIを使用する際にNet::OAuthへ渡すパラメータのencodingがおかしかった問題は解決されました。(但し、3.13004 は 背景変更とアイコン変更が上手く動かないという問題があります( 3.13005で解決済み ) 迅速に対応してくれた Marc Mims に感謝... 続きを読む

コメントする

AUTHOR

  • turugina (虎王 剱奈)
  • E-mail: turugina {at} floralcompany.jp
  • pixiv
  • ニジエ

2014年5月

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

アーカイブ

OpenID対応しています OpenIDについて
Powered by Movable Type 5.2.10

- 警 告 -

本サイトにはいわゆる「18禁画像」(イラスト)へのリンクが存在します。 未成年の方や、その手の画像に不快感を覚える方は、 該当記事(「えちぃの」及び「ちょっとえちぃの」カテゴリ) をご覧にならないようお願いいたします。

上記を理解した上で非表示のブログパーツを表示する
あわせて読みたいブログパーツ
ついった
drawr/pixiv/twitpic