Hatena::ブログ(Diary)

黒羊工房はてな版

2010-05-01

[][][]【試行錯誤中】twitterOAuth使ってもAPIが150のままになってる(ように見える)件

twitterOAuthでポストしているのですが、どうも残りAPI数の取得がうまくいってない。

投稿の方はちゃんとできてる(ように見える)のですが、basic認証で150回のAPIOAuthでは350回になると言われている部分でなぜか150回と返ってくるみたいで、まだ原因が分かっていないのですが、現状のコードを書いておきます。

use strict;
use warnings;
use utf8;
use Data::Dumper;
use Digest::SHA;
use IO::All;
use JSON;
use LWP::UserAgent;
use Net::OAuth;

my $account = from_json( io( 'account.json' )->all );
my $application = from_json( io( 'application.json' )->all );

my $uri = 'http://twitter.com/account/rate_limit_status.json';
my $request = Net::OAuth->request('protected resource')->new(
    consumer_key => $application->{consumer_key},
    consumer_secret => $application->{consumer_secret},
    token => $account->{access_token},
    token_secret => $account->{access_token_secret},
    request_url => $uri,
    request_method => 'GET',
    signature_method => 'HMAC-SHA1',
    timestamp => time,
    nonce => Digest::SHA::sha1_base64(time . $$ . rand),
);
$request->sign;
my $ua = LWP::UserAgent->new;
my $res = $ua->get( $request->to_url );
my $content = $res->content;
print Dumper from_json $content;

結果

$VAR1 = {

'reset_time_in_seconds' => 1272720722,

'hourly_limit' => 150,

'remaining_hits' => 128,

'reset_time' => 'Sat May 01 13:32:02 +0000 2010'

};


これを以前にtwitterでつぶやいていたら、@fukurouさんが検証してくれました。

twitter API の発行回数が OAuth を使うと 350回/hour になったか確認してみた - ふくろう好き技術者ブログ

実行結果は、↓こちら。 認証していないときは、IPアドレスに対してのlimit取得ができて、認証後は、OAuth ACCESS token の limt が 350 になっています。

$VAR1 = {
‘reset_time_in_seconds’ => 1269827318,
‘hourly_limit’ => 150,
‘remaining_hits’ => 146,
‘reset_time’ => ‘Mon Mar 29 01:48:38 +0000 2010′
};
$VAR1 = {
‘reset_time_in_seconds’ => 1269827656,
‘hourly_limit’ => 350,
‘remaining_hits’ => 350,
‘reset_time’ => ‘Mon Mar 29 01:54:16 +0000 2010′
};

みごとに 350回/hour の確認ができました。

※ Net::Twitter は、version 3.10003 を使いました。

@fukurouさんはNet::Twitterを使っていて、私が使ったのはNet::OAuthなのでそこの所が違う部分なのですが、少なくともAPIが150のままというのは私の妄想だったようです。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証