]> jfr.im git - z_archive/twitter.git/blobdiff - twitter/oauth_dance.py
Version 1.17.0
[z_archive/twitter.git] / twitter / oauth_dance.py
index 17dbae6f44fce9981a6c7f768d53ceff8a23dc29..43b88d0ea6e01a46c793408102e845094ed8e58f 100644 (file)
@@ -1,11 +1,11 @@
-
 from __future__ import print_function
 
 import webbrowser
 import time
 
-from .api import Twitter
+from .api import Twitter, json
 from .oauth import OAuth, write_token_file
+from .oauth2 import OAuth2, write_bearer_token_file
 
 try:
     _input = raw_input
@@ -13,6 +13,22 @@ except NameError:
     _input = input
 
 
+def oauth2_dance(consumer_key, consumer_secret, token_filename=None):
+    """
+    Perform the OAuth2 dance to transform a consumer key and secret into a
+    bearer token.
+
+    If a token_filename is given, the bearer token will be written to
+    the file.
+    """
+    twitter = Twitter(
+        auth=OAuth2(consumer_key=consumer_key, consumer_secret=consumer_secret),
+        format="",
+        api_version="")
+    token = json.loads(twitter.oauth2.token(grant_type="client_credentials"))["access_token"]
+    if token_filename:
+        write_bearer_token_file(token)
+    return token
 
 def oauth_dance(app_name, consumer_key, consumer_secret, token_filename=None):
     """
@@ -32,13 +48,13 @@ def oauth_dance(app_name, consumer_key, consumer_secret, token_filename=None):
         auth=OAuth('', '', consumer_key, consumer_secret),
         format='', api_version=None)
     oauth_token, oauth_token_secret = parse_oauth_tokens(
-        twitter.oauth.request_token())
+        twitter.oauth.request_token(oauth_callback="oob"))
     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:
 """)
-    oauth_url = ('http://api.twitter.com/oauth/authorize?oauth_token=' +
+    oauth_url = ('https://api.twitter.com/oauth/authorize?oauth_token=' +
                  oauth_token)
     print("Opening: %s\n" % oauth_url)