Проблемы с аутентифицированными вызовами API Bitbucket через OAuth

Я пытаюсь выполнить аутентифицированные вызовы API REST Bitbucket с аутентификацией Oauth. Я успешно получил oauth_token и oauth_token_secret (хотя они такие же, как request_token и request_token_secret, что кажется странным, но не выходит за рамки спецификации). Когда я делаю вызов API к другой конечной точке, я получаю 401 (не аутентифицирован). Я пытался использовать аутентификацию заголовка и/или передавать oauth_token и oauth_token_secret в качестве параметров HTTP с нормальным результатом.

Вот код:

account_name_url = 'https://api.bitbucket.org/1.0/user'

feedback_oauth_hook = OAuthHook(
    access_token='REDACTED',
    access_token_secret='ALSO_REDACTED',
    consumer_key=CLIENT_ID,
    consumer_secret=CLIENT_SECRET,
    header_auth=True
    )

params = {
    'access_token': auth_tokens['access_token'],
    'access_token_secret': auth_tokens['access_secret']
    }

response = requests.get(account_name_url, data=params, hooks={'pre_request': feedback_oauth_hook})

person user1698229    schedule 08.11.2012    source источник


Ответы (1)


import oauth2  #pip install oauth2
accessToken = oauth2.Token(OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
consumer_key = YOUR_COMSUMER_KEY
consumer_secret = YOUR_CONSUMER_SECRET
consumer = oauth2.Consumer(consumer_key, consumer_secret)
client = oauth2.Client(consumer, accessToken)
api_url = "https://api.bitbucket.org/1.0/user"
resp, content = client.request(api_url, "GET")
print resp, content

Приведенный выше код Python работает для меня.

Я печатаю информацию о запросе, обратите внимание, что она содержит oauth_version=1.0, что требуется. Я попытался удалить его, затем был возвращен 401. Я думаю, что BitBucket должен задокументировать это.

person freestyler    schedule 05.01.2013