]>
jfr.im git - z_archive/twitter.git/blob - twitter/oauth_dance.py
1 from __future__
import print_function
6 from .api
import Twitter
, json
7 from .oauth
import OAuth
, write_token_file
8 from .oauth2
import OAuth2
, write_bearer_token_file
16 def oauth2_dance(consumer_key
, consumer_secret
, token_filename
=None):
18 Perform the OAuth2 dance to transform a consumer key and secret into a
21 If a token_filename is given, the bearer token will be written to
25 auth
=OAuth2(consumer_key
=consumer_key
, consumer_secret
=consumer_secret
),
28 token
= json
.loads(twitter
.oauth2
.token(grant_type
="client_credentials")
29 .encode("utf8"))["access_token"]
31 write_bearer_token_file(token
)
34 def oauth_dance(app_name
, consumer_key
, consumer_secret
, token_filename
=None):
36 Perform the OAuth dance with some command-line prompts. Return the
37 oauth_token and oauth_token_secret.
39 Provide the name of your app in `app_name`, your consumer_key, and
40 consumer_secret. This function will open a web browser to let the
41 user allow your app to access their Twitter account. PIN
42 authentication is used.
44 If a token_filename is given, the oauth tokens will be written to
47 print("Hi there! We're gonna get you all set up to use %s." % app_name
)
49 auth
=OAuth('', '', consumer_key
, consumer_secret
),
50 format
='', api_version
=None)
51 oauth_token
, oauth_token_secret
= parse_oauth_tokens(
52 twitter
.oauth
.request_token(oauth_callback
="oob"))
54 In the web browser window that opens please choose to Allow
55 access. Copy the PIN number that appears on the next page and paste or
58 oauth_url
= ('https://api.twitter.com/oauth/authorize?oauth_token=' +
60 print("Opening: %s\n" % oauth_url
)
63 r
= webbrowser
.open(oauth_url
)
64 time
.sleep(2) # Sometimes the last command can print some
65 # crap. Wait a bit so it doesn't mess up the next
71 Uh, I couldn't open a browser on your computer. Please go here to get
75 oauth_verifier
= _input("Please enter the PIN: ").strip()
78 oauth_token
, oauth_token_secret
, consumer_key
, consumer_secret
),
79 format
='', api_version
=None)
80 oauth_token
, oauth_token_secret
= parse_oauth_tokens(
81 twitter
.oauth
.access_token(oauth_verifier
=oauth_verifier
))
84 token_filename
, oauth_token
, oauth_token_secret
)
86 print("That's it! Your authorization keys have been written to %s." % (
88 return oauth_token
, oauth_token_secret
90 def parse_oauth_tokens(result
):
91 for r
in result
.split('&'):
93 if k
== 'oauth_token':
95 elif k
== 'oauth_token_secret':
96 oauth_token_secret
= v
97 return oauth_token
, oauth_token_secret