]> jfr.im git - z_archive/twitter.git/blobdiff - twitter/oauth_dance.py
Merge pull request #208 from RouxRC/pr-userstream-keywords-example
[z_archive/twitter.git] / twitter / oauth_dance.py
index dcbcc6ab5f40a7dd6b84c09a6cd151c7134de6ce..d3f0ea8f6548635a5c93d6c832f160bb0d5f5cf3 100644 (file)
@@ -1,9 +1,17 @@
+from __future__ import print_function
 
 import webbrowser
 import time
 
-from api import Twitter
-from oauth import OAuth, write_token_file
+from .api import Twitter
+from .oauth import OAuth, write_token_file
+
+try:
+    _input = raw_input
+except NameError:
+    _input = input
+
+
 
 def oauth_dance(app_name, consumer_key, consumer_secret, token_filename=None):
     """
@@ -12,42 +20,53 @@ def oauth_dance(app_name, consumer_key, consumer_secret, token_filename=None):
 
     Provide the name of your app in `app_name`, your consumer_key, and
     consumer_secret. This function will open a web browser to let the
-    user Allow your app to access their Twitter account. PIN
+    user allow your app to access their Twitter account. PIN
     authentication is used.
 
     If a token_filename is given, the oauth tokens will be written to
     the file.
     """
-    print ("Hi there! We're gonna get you all set up to use %s." % app_name)
+    print("Hi there! We're gonna get you all set up to use %s." % app_name)
     twitter = Twitter(
         auth=OAuth('', '', consumer_key, consumer_secret),
-        format='')
+        format='', api_version=None)
     oauth_token, oauth_token_secret = parse_oauth_tokens(
         twitter.oauth.request_token())
-    print """
+    print("""
 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 = ('https://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 = _input("Please enter the PIN: ").strip()
     twitter = Twitter(
         auth=OAuth(
             oauth_token, oauth_token_secret, consumer_key, consumer_secret),
-        format='')
+        format='', api_version=None)
     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." % (
-            token_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):