X-Git-Url: https://jfr.im/git/z_archive/twitter.git/blobdiff_plain/1b31d642c54e09dc8f8a1ca49c934d6990f2ab33..ce92ec7762914d9499be24d1730338ed1de7f642:/twitter/oauth_dance.py diff --git a/twitter/oauth_dance.py b/twitter/oauth_dance.py index cffa624..a89bdd2 100644 --- a/twitter/oauth_dance.py +++ b/twitter/oauth_dance.py @@ -1,4 +1,6 @@ +import webbrowser +import time from api import Twitter from oauth import OAuth, write_token_file @@ -27,23 +29,43 @@ In the web browser window that opens please choose to Allow access. Copy the PIN number that appears on the next page and paste or type it here: """ - webbrowser.open( - 'http://api.twitter.com/oauth/authorize?oauth_token=' + - oauth_token) - time.sleep(2) # Sometimes the last command can print some - # crap. Wait a bit so it doesn't mess up the next - # prompt. - oauth_verifier = raw_input("Please type the PIN: ").strip() + oauth_url = ('http://api.twitter.com/oauth/authorize?oauth_token=' + + oauth_token) + print "Opening: %s\n" % oauth_url + + try: + r = webbrowser.open(oauth_url) + time.sleep(2) # Sometimes the last command can print some + # crap. Wait a bit so it doesn't mess up the next + # prompt. + if not r: + raise Exception() + except: + print """ +Uh, I couldn't open a browser on your computer. Please go here to get +your PIN: + +""" + oauth_url + oauth_verifier = raw_input("Please enter the PIN: ").strip() twitter = Twitter( auth=OAuth( - oauth_token, oauth_token_secret, CONSUMER_KEY, CONSUMER_SECRET), + oauth_token, oauth_token_secret, consumer_key, consumer_secret), format='') oauth_token, oauth_token_secret = parse_oauth_tokens( twitter.oauth.access_token(oauth_verifier=oauth_verifier)) if token_filename: write_token_file( token_filename, oauth_token, oauth_token_secret) - print - print "That's it! Your authorization keys have been written to %s." % ( - options['oauth_filename']) + print + print "That's it! Your authorization keys have been written to %s." % ( + token_filename) + return oauth_token, oauth_token_secret + +def parse_oauth_tokens(result): + for r in result.split('&'): + k, v = r.split('=') + if k == 'oauth_token': + oauth_token = v + elif k == 'oauth_token_secret': + oauth_token_secret = v return oauth_token, oauth_token_secret