twitter.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import urlparse
  2. import oauth2 as oauth
  3. request_token_url = 'https://api.twitter.com/oauth/request_token'
  4. access_token_url = 'https://api.twitter.com/oauth/access_token'
  5. authorize_url = 'https://api.twitter.com/oauth/authorize'
  6. class TwitterOauthClient(object):
  7. def __init__(self, consumer_key, consumer_secret, access_token, access_token_secret):
  8. self.consumer_key = consumer_key
  9. self.consumer_secret = consumer_secret
  10. self.access_token = access_token
  11. self.access_token_secret = access_token_secret
  12. self.consumer = oauth.Consumer(key=self.consumer_key, secret=self.consumer_secret)
  13. def get_authorize_url(self):
  14. '''
  15. Obtained oauth_token and oauth_token_secret from request_token_url,
  16. returns an authorize url.
  17. From the redirect url, we obtain the oauth verifier.
  18. '''
  19. client = oauth.Client(self.consumer)
  20. resp, content = client.request(request_token_url, 'GET')
  21. if int(resp['status']) != 200:
  22. raise Exception('Invalid response %s' %resp['status'])
  23. request_token = dict(urlparse.parse_qsl(content))
  24. #temporary
  25. self.oauth_token = request_token['oauth_token']
  26. self.oauth_token_secret = request_token['oauth_token_secret']
  27. print self.oauth_token
  28. #link to authorize app access twitter data and return to twitter api example page
  29. link = authorize_url+"?oauth_token="+self.oauth_token+"&redirect_uri=http%3A%2F%2Flocalhost%3A8000/hackathon/twitter/"
  30. return link
  31. def get_access_token_url(self, oauth_verifier):
  32. token = oauth.Token(self.oauth_token, self.oauth_token_secret)
  33. token.set_verifier(oauth_verifier)
  34. client = oauth.Client(self.consumer, token)
  35. resp, content = client.request(access_token_url, 'POST')
  36. if int(resp['status']) != 200:
  37. raise Exception('Invalid response %s' %resp['status'])
  38. print content
  39. access_token = dict(urlparse.parse_qsl(content))
  40. #permanent
  41. self.oauth_token = access_token['oauth_token']
  42. self.oauth_token_secret = access_token['oauth_token_secret']
  43. self.user_id = access_token['user_id']
  44. self.username = access_token['screen_name']