def authenticate_new_user(): # OAuth 1 authentication workflow is to get a request token, ask user to authenticate it, then trade it for # an activated access token. Then using the access token, consumer app can make requests on behalf of the # client using the access tokens. consumer = Consumer('KIdabqiJRgbsuksgKvHScbYAx', secrets.CONSUMER_SECRET) service = Service(consumer) # 1. Get a new request token for the consumer app. try: resp = service.get_request_token(REQUEST_TOKEN_URL) except Exception as ex: print('Error getting request token: {}'.format(ex)) exit(1) # 2. Ask user to authenticate the request token # This should redirect a user to the authorization page, and get keys from the callback from Service to the # consumer, but to keep example simple,browser will open locally, and parameters from callback will be entered # manually. webbrowser.open('https://api.twitter.com/oauth/authenticate?oauth_token={}'.format(resp['oauth_token'])) oauth_token = raw_input('Enter oauth_token: ') oauth_verifier = raw_input('Enter oauth_verifier: ') # 3. Take user authenticated tokens, and trade for an access token. try: resp_dict = service.get_access_token(ACCESS_TOKEN_URL, oauth_token, oauth_verifier) client = Client(resp_dict['oauth_token'], resp_dict['oauth_token_secret']) except Exception as ex: print('Error getting access token: {}'.format(ex)) exit(1) print('Authentication Completed!\nClient key: {}\nClient Secret: {}'.format(client.client_key, client.client_secret))
def test_generate_oauth_signature_valid_no_client_keys(self): consumer = Consumer(CONSUMER_TOKEN, CONSUMER_SECRET) client = Client() service = Service(consumer) parameters = OauthParameters(nonce=DETERM_NONCE, oauth_consumer_key=CONSUMER_TOKEN, timestamp=DETERM_TIMESTAMP) signature = service._generate_signature(URL, METHOD, client, parameters, QUERY) assert (signature == EXPECTED_SIGNATURE_EMPTY_CLIENT)
def test_delete(self, delete): delete.return_value = self.MockResponse() consumer = Consumer(CONSUMER_TOKEN, CONSUMER_SECRET) service = Service(consumer) client = Client(CLIENT_TOKEN, CLIENT_SECRET) url = URL resp = service.delete(url, client) assert (resp.status_code == '200')
def post_profile(): consumer = Consumer('KIdabqiJRgbsuksgKvHScbYAx', secrets.CONSUMER_SECRET) service = Service(consumer) client = Client('150671057-FDHGsbphiN5eNv4gjShy0cWISiVDBmUGfuUYM5jT', secrets.CLIENT_SECRET) url = POST_PROFILE_UPDATE_URL body_parameters = {'name': 'Sean Cook', 'description': 'Keep Calm and Rock On.'} resp = service.post(url, body_parameters, client) print(resp.content)
def get_timeline(): consumer = Consumer('KIdabqiJRgbsuksgKvHScbYAx', secrets.CONSUMER_SECRET) service = Service(consumer) client = Client('150671057-FDHGsbphiN5eNv4gjShy0cWISiVDBmUGfuUYM5jT', secrets.CLIENT_SECRET) url = GET_TIMELINE_URL query_parameters = {'screen_name': 'twitterapi', 'count': '2'} resp = service.get(url, query_parameters, client) print(resp.content)
def test_put(self, put): put.return_value = self.MockResponse() consumer = Consumer(CONSUMER_TOKEN, CONSUMER_SECRET) service = Service(consumer) client = Client(CLIENT_TOKEN, CLIENT_SECRET) url = URL body_parameters = {'name': 'Jason Fox', 'description': 'Keep Calm and Rock On.'} resp = service.put(url, body_parameters, client) assert (resp.status_code == '200')
def test_get(self, get): get.return_value = self.MockResponse() consumer = Consumer(CONSUMER_TOKEN, CONSUMER_SECRET) service = Service(consumer) client = Client(CLIENT_TOKEN, CLIENT_SECRET) url = URL query = {'return_all': 'Yes', 'animal': 'Zebra'} resp = service.get(url, query, client) assert (resp.status_code == '200')
def test_generate_oauthparameters(self, time_now): time_now.return_value = 1439093945 consumer = Consumer(CONSUMER_TOKEN, CONSUMER_SECRET) client = Client(CLIENT_TOKEN, CLIENT_SECRET) service = Service(consumer) parameters = service._generate_oauth_parameters(client) assert (parameters.oauth_version == '1.0') assert (parameters.oauth_consumer_key == consumer.consumer_key) assert (parameters.oauth_signature_method == 'HMAC-SHA1') assert (parameters.oauth_token == client.client_key) assert (parameters.oauth_nonce) assert (int(parameters.oauth_timestamp) == time.time())
def check_random_oauth_signature(self): random.seed() debug('Using seed {}'.format(random.getstate)) methods = ('GET', 'POST', 'PUT', 'DELETE') consumer = Consumer(hashlib.sha1(str(random.random())).hexdigest()[:30], hashlib.sha1(str(random.random())).hexdigest()[:30]) client = Client(hashlib.sha1(str(random.random())).hexdigest()[:30], hashlib.sha1(str(random.random())).hexdigest()[:20]) method = methods[random.randint(0, len(methods) - 1)] url = 'https://www.example.com' oauth_parameters = OauthParameters(nonce=hashlib.sha1(str(random.random())).hexdigest(), oauth_consumer_key=consumer.consumer_key, timestamp=str(random.randint(0, 2 ** 32 - 1))) service = Service(consumer) signature = service._generate_signature(url, method, client, oauth_parameters) assert signature
def test_generate_oauthparameters_no_oauth_token_with_empty_client(self): consumer = Consumer(CONSUMER_TOKEN, CONSUMER_SECRET) client = Client('', '') service = Service(consumer) parameters = service._generate_oauth_parameters(client) assert (parameters.oauth_token == client.client_key)
def test_generate_oauth_signature_null_method(self): consumer = Consumer(CONSUMER_TOKEN, CONSUMER_SECRET) client = Client() service = Service(consumer) parameters = OauthParameters(nonce=DETERM_NONCE, oauth_consumer_key=CONSUMER_TOKEN, timestamp=DETERM_TIMESTAMP) service._generate_signature('', METHOD, client, parameters, QUERY)