Oauth Rate Limit 150 per hour?

53 views
Skip to first unread message

Correa Denzil

unread,
Jun 6, 2011, 10:43:18 AM6/6/11
to twitter-deve...@googlegroups.com
Hi,

I am performing OAuth to sign my requests. I am not developing a web
app. I am trying to harvest some user data. Here's what I do :

import oauth2 as oauth
import time

CONSUMER_KEY = 'xxxxxxxxxxxxxx'
CONSUMER_SECRET = 'xxxxxxxxxxxxxx'
access_key = 'xxxxxxxxxx'
access_secret_key = 'xxxxxxxxxxxxxxxxxxx'

consumer = oauth.Consumer(CONSUMER_KEY, CONSUMER_SECRET)
token = oauth.Token(access_key, access_secret_key)

client = oauth.Client(consumer)

# Set the API end point
url = 'http://api.twitter.com/1'

params = {'oauth_version': "1.0",
'oauth_nonce': oauth.generate_nonce(),
'oauth_timestamp': int(time.time()),
'oauth_token': access_key,
'oauth_consumer_key': consumer.key,
'screen_name' : 'denzil_correa'
}

req = oauth.Request(method="GET", url=url, parameters=params)

# Sign the request.
signature_method = oauth.SignatureMethod_HMAC_SHA1()
req.sign_request(signature_method, consumer, token)

### Make the auth request ###

test = 'http://api.twitter.com/1/account/rate_limit_status.json'

resp, content = client.request(test, "GET")

print resp
print content # prints 'ok'

Here's the output:

{"reset_time":"Mon Jun 06 14:54:50 +0000
2011","remaining_hits":132,"hourly_limit":150,"reset_time_in_seconds":1307372090}


Am I missing something?


--Regards,
Denzil

Tom van der Woerdt

unread,
Jun 6, 2011, 10:46:47 AM6/6/11
to twitter-deve...@googlegroups.com
Is that Python? Anyway, not relevant.

1. You aren't signing using the proper url.
2. You aren't using anything related to the signature on the request (req).

Tom

Correa Denzil

unread,
Jun 6, 2011, 10:54:06 AM6/6/11
to twitter-deve...@googlegroups.com
Is that Python? : Yes

1. You aren't signing using the proper url.

Is the end point URL wrong?

2. You aren't using anything related to the signature on the request (req)

I am a newbie to Python. I am trying to dabble using OAuth. I
understand the OAuth flow but somehow what I am doing seems a bit
tangential to what OAuth is meant for. What should I do to rectify it
?

--Regards,
Denzil

Tom van der Woerdt

unread,
Jun 6, 2011, 11:00:24 AM6/6/11
to twitter-deve...@googlegroups.com
1. You don't sign the test variable, you sign the URL variable, which
isn't an endpoint.
2. You don't use the req variable to make the request, but instead you
create a new connection which is completely unrelated to the signed request.

Tom

Correa Denzil

unread,
Jun 6, 2011, 11:10:12 AM6/6/11
to twitter-deve...@googlegroups.com
Tom :

Thanks for the reply.

1. You don't sign the test variable, you sign the URL variable, which
isn't an endpoint.

I have changed the same

2. You don't use the req variable to make the request, but instead you
create a new connection which is completely unrelated to the signed
request.

I don't understand this point. What's the change am I supposed to make ?

I have opened up a gist for easier editing : https://gist.github.com/1010430

--Regards,
Denzil

Tom van der Woerdt

unread,
Jun 6, 2011, 11:19:48 AM6/6/11
to twitter-deve...@googlegroups.com
In the "Make the auth request" part you make a request using "client"
instead of the already prepared and signed "req" variable. You should
use "req" to make the request.

Tom

Correa Denzil

unread,
Jun 6, 2011, 11:28:55 AM6/6/11
to twitter-deve...@googlegroups.com
Tom :

Are you sure? This gives me a :

Traceback (most recent call last):
File "oauth_test.py", line 41, in <module>
resp, content = req.request(url, "GET")
AttributeError: 'Request' object has no attribute 'request'

--Regards,
Denzil

Tom van der Woerdt

unread,
Jun 6, 2011, 11:34:19 AM6/6/11
to twitter-deve...@googlegroups.com
Well, of course, don't literally replace the variables, but figure out a
way to use the req object. I don't know anything about that object so I
can't help you there.

Tom

Correa Denzil

unread,
Jun 6, 2011, 11:38:09 AM6/6/11
to twitter-deve...@googlegroups.com
Well, it turns out it's not the case. Both the points you mentioned
weren't the issue as I see it.

The issue was while I was creating the client I wasn't supplying the
token. Check Line 20 in the gist.

https://gist.github.com/1010430

--Regards,
Denzil

Tom van der Woerdt

unread,
Jun 6, 2011, 11:40:32 AM6/6/11
to twitter-deve...@googlegroups.com
In that case, try removing everything related to the req variable. Seems
it's all unrelated to the actual request (unless the oauth library is
very badly designed, of course). Line 22 all the way up to 35.

Tom

Correa Denzil

unread,
Jun 6, 2011, 1:26:34 PM6/6/11
to twitter-deve...@googlegroups.com
Yes, it works. Thanks :-)

--Regards,
Denzil

> --
> Twitter developer documentation and resources: https://dev.twitter.com/doc
> API updates via Twitter: https://twitter.com/twitterapi
> Issues/Enhancements Tracker:
> https://code.google.com/p/twitter-api/issues/list
> Change your membership to this group:
> https://groups.google.com/forum/#!forum/twitter-development-talk
>

Reply all
Reply to author
Forward
0 new messages