OAuth-аутентификация для magiccardmarket с Python-запросами - PullRequest
1 голос
/ 13 апреля 2019

Я хочу программно получить набор определенных пользователей на http://www.cardmarket.com/,, но не могу заставить OAuth-аутентификацию работать в следующем фрагменте Python.

Просто используя доступные методы из questions_oauthlibбиблиотека не дала никаких положительных результатов, и я также попытался создать заголовок OAuth самостоятельно и передать его в запросе-вызове, но все безрезультатно.Я немного в уме, потому что я часами безрезультатно пытался до такой степени, что потерял наибольшее удовольствие от того, что должно было быть простым хобби-проектом.Тем не менее я уверен, что это простая проблема, которая, мы надеемся, может быть быстро решена.

Вот простой код, который должен, но не работает:

import requests
from requests_oauthlib import OAuth1

user = ..

app_token  = ..
app_secret = ..
access_token = ..
access_token_secret = ..

request_url = "https://api.cardmarket.com/ws/v2.0/users/" + user + "/articles?start=0&maxResults=100"

auth = OAuth1(app_token, app_secret, resource_owner_key=access_token, resource_owner_secret=access_token_secret)
response = requests.get(request_url, auth=auth)    

print(response.request.headers)
print(response)
print(response.content)

Я такжепопробовал смесь вариантов и, как уже говорилось, также пытался создать заголовок самостоятельно, но безрезультатно.

Я не вижу ничего плохого в предоставленном коде как есть, но все же получаюошибка, связанная с несанкционированностью при выполнении данного запроса.

Оператор печати response.request.headers возвращает следующее:

{'Authorization': b'OAuth oauth_nonce="..", oauth_timestamp="..", oauth_version="1.0", oauth_signature_method="HMAC-SHA1", oauth_consumer_key="..", oauth_token="..", oauth_signature=".."', 'Accept-Encoding': b'gzip, deflate', 'User-Agent': b'python-requests/2.18.4', 'Accept': b'*/*', 'Connection': b'keep-alive'}

Что включает в себя все соответствующие данные (хотя, может быть, слишком много?Такие вещи, как Accept-Encoding, User-Agent и Connection, добавляются автоматически, но могут и не ожидаться, но я не уверен.)

1 Ответ

1 голос
/ 13 апреля 2019

Вопрос : получить список конкретных пользователей

Документация RESTful API Cardmarket (версия 2.0)

Оболочка Python для карточного рынка.com API (версия 2.0, с использованием OAuth1)

Requests-OAuthlib: OAuth for Humans


Использование OAuth1Session:

from requests_oauthlib import OAuth1Session

# base_url = 'https://api.cardmarket.com/ws/v2.0/output.json'
base_url = 'https://api.cardmarket.com/ws/v2.0'

# product_id = 266361 # Mandatory
# url = '{}/articles/{}'.format(base_url, product_id)

user_id = 266361 # Mandatory  Type: integer (ID) or string (name)
url = '{}/users/:{}/articles'.format(base_url, user_id)

oauth = OAuth1Session('app_token',
                       client_secret='app_secret',
                       resource_owner_key='access_token',
                       resource_owner_secret='access_token_secret',
                       realm=url
                      )

params = {'start':0, 'maxResults':100}
r = oauth.get(url, params=params)
...