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))
Exemple #2
0
 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)
Exemple #3
0
    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)
Exemple #6
0
    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')
Exemple #7
0
    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')
Exemple #8
0
 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())
Exemple #9
0
 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
Exemple #10
0
 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)
Exemple #11
0
 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)