Skip to content
This repository was archived by the owner on Feb 21, 2019. It is now read-only.

Commit 4b32e17

Browse files
author
Nathan Hamblen
committed
Merge remote branch 'origin/oauth_1_0a'
2 parents e25e46d + 3802dec commit 4b32e17

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

app.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
from optparse import OptionParser
1616
import webbrowser
17+
import sys
1718

1819
def config_client(config_name=None):
1920
return get_client(get_config(config_name)[1])
@@ -49,6 +50,10 @@ def set_token(config, name, key, secret):
4950
option = OptionParser('%prog [options] [consumer-key] [consumer-secret]')
5051
option.add_option('--config', dest='config',
5152
help='read & write settings to CONFIG, default is app.cfg')
53+
option.add_option('--verifier', dest='verifier',
54+
help='oauth_callback for request-token request, defaults to oob')
55+
option.add_option('--callback', dest='callback', default='oob',
56+
help='oauth_verifier, required to gain access token')
5257
(options, args) = option.parse_args()
5358

5459
config_name, config = get_config(options.config)
@@ -62,7 +67,7 @@ def set_token(config, name, key, secret):
6267
mucli = get_client(config)
6368

6469
def access_granted():
65-
print """
70+
print """\
6671
access-key: %s
6772
accses-secret: %s
6873
@@ -73,14 +78,16 @@ def access_granted():
7378
access_granted()
7479
else:
7580
if config.has_section('request'):
81+
if not options.verifier:
82+
sys.exit("To complete the process you must supply a --verifier")
7683
request_key, request_secret = get_token(config, 'request')
7784
oauth_session = mucli.new_session(request_key=request_key, request_secret=request_secret)
78-
oauth_session.fetch_access_token()
85+
print " member_id: %s" % oauth_session.fetch_access_token(options.verifier)
7986
set_token(config, 'access', oauth_session.access_token.key, oauth_session.access_token.secret)
8087
access_granted()
8188
else:
8289
oauth_session = mucli.new_session()
83-
oauth_session.fetch_request_token()
90+
oauth_session.fetch_request_token(callback=options.callback)
8491

8592
set_token(config, 'request', oauth_session.request_token.key, oauth_session.request_token.secret)
8693

meetup_api_client.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import datetime
55
import time
6+
import cgi
67
import types
78
from urllib import urlencode
89
from urllib2 import HTTPError, HTTPErrorProcessor, urlopen, Request, build_opener
@@ -132,8 +133,9 @@ def __init__(self, consumer, request_token, access_token):
132133
self.request_token = request_token
133134
self.access_token = access_token
134135

135-
def fetch_request_token(self, signature_method=signature_method_hmac):
136-
oauth_req = oauth.OAuthRequest.from_consumer_and_token(self.consumer, http_url=(OAUTH_BASE_URL + 'oauth/request/'))
136+
def fetch_request_token(self, callback="oob", signature_method=signature_method_hmac):
137+
oauth_req = oauth.OAuthRequest.from_consumer_and_token(
138+
self.consumer, http_url=(OAUTH_BASE_URL + 'oauth/request/'), callback=callback)
137139
oauth_req.sign_request(signature_method, self.consumer, None)
138140
token_string = urlopen(Request(oauth_req.http_url, headers=oauth_req.to_header())).read()
139141
self.request_token = oauth.OAuthToken.from_string(token_string)
@@ -145,14 +147,16 @@ def get_authorize_url(self, oauth_callback=None):
145147
callbackUrl = ""
146148
return OAUTH_BASE_URL + "authorize/?oauth_token=%s%s" % (self.request_token.key, callbackUrl)
147149

148-
def fetch_access_token(self, signature_method=signature_method_hmac, request_token=None):
150+
def fetch_access_token(self, oauth_verifier, signature_method=signature_method_hmac, request_token=None):
149151
temp_request_token = request_token or self.request_token
150152
if not temp_request_token:
151153
raise NoToken("You must provide a request token to exchange for an access token")
152-
oauth_req = oauth.OAuthRequest.from_consumer_and_token(self.consumer, token=temp_request_token, http_url=OAUTH_BASE_URL + 'oauth/access/')
154+
oauth_req = oauth.OAuthRequest.from_consumer_and_token(self.consumer, token=temp_request_token,
155+
http_url=OAUTH_BASE_URL + 'oauth/access/', verifier=oauth_verifier)
153156
oauth_req.sign_request(signature_method, self.consumer, temp_request_token)
154157
token_string = urlopen(Request(oauth_req.http_url, headers=oauth_req.to_header())).read()
155158
self.access_token = oauth.OAuthToken.from_string(token_string)
159+
return cgi.parse_qs(token_string)['member_id'][0]
156160

157161
class MeetupOAuth(Meetup):
158162

0 commit comments

Comments
 (0)