]> jfr.im git - z_archive/twitter.git/blame - twitter/oauth_dance.py
Be explicit about what twitter package imports from api.
[z_archive/twitter.git] / twitter / oauth_dance.py
CommitLineData
1b31d642 1
ddeba164
MV
2import webbrowser
3import time
1b31d642
MV
4
5from api import Twitter
6from oauth import OAuth, write_token_file
7
8def oauth_dance(app_name, consumer_key, consumer_secret, token_filename=None):
9 """
10 Perform the OAuth dance with some command-line prompts. Return the
11 oauth_token and oauth_token_secret.
12
13 Provide the name of your app in `app_name`, your consumer_key, and
14 consumer_secret. This function will open a web browser to let the
15 user Allow your app to access their Twitter account. PIN
16 authentication is used.
17
18 If a token_filename is given, the oauth tokens will be written to
19 the file.
20 """
21 print ("Hi there! We're gonna get you all set up to use %s." % app_name)
22 twitter = Twitter(
23 auth=OAuth('', '', consumer_key, consumer_secret),
24 format='')
25 oauth_token, oauth_token_secret = parse_oauth_tokens(
26 twitter.oauth.request_token())
27 print """
28In the web browser window that opens please choose to Allow
29access. Copy the PIN number that appears on the next page and paste or
30type it here:
31"""
25feb118
MV
32 oauth_url = ('http://api.twitter.com/oauth/authorize?oauth_token=' +
33 oauth_token)
dda98f55
MV
34 print "Opening: %s\n" % oauth_url
35
25feb118
MV
36 try:
37 r = webbrowser.open(oauth_url)
38 time.sleep(2) # Sometimes the last command can print some
39 # crap. Wait a bit so it doesn't mess up the next
40 # prompt.
41 if not r:
42 raise Exception()
43 except:
44 print """
45Uh, I couldn't open a browser on your computer. Please go here to get
46your PIN:
47
48""" + oauth_url
49 oauth_verifier = raw_input("Please enter the PIN: ").strip()
1b31d642
MV
50 twitter = Twitter(
51 auth=OAuth(
ddeba164 52 oauth_token, oauth_token_secret, consumer_key, consumer_secret),
1b31d642
MV
53 format='')
54 oauth_token, oauth_token_secret = parse_oauth_tokens(
55 twitter.oauth.access_token(oauth_verifier=oauth_verifier))
56 if token_filename:
57 write_token_file(
58 token_filename, oauth_token, oauth_token_secret)
ddeba164
MV
59 print
60 print "That's it! Your authorization keys have been written to %s." % (
61 token_filename)
62 return oauth_token, oauth_token_secret
63
64def parse_oauth_tokens(result):
65 for r in result.split('&'):
66 k, v = r.split('=')
67 if k == 'oauth_token':
68 oauth_token = v
69 elif k == 'oauth_token_secret':
70 oauth_token_secret = v
1b31d642 71 return oauth_token, oauth_token_secret