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
1. You aren't signing using the proper url.
2. You aren't using anything related to the signature on the request (req).
Tom
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
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
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
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
--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
>