使用Python请求进行Magiccardmarket的OAuth身份验证

男孩

我想以编程方式在http://www.cardmarket.com/上获取特定用户的库存,但似乎无法在以下Python代码段中使用OAuth身份验证。

仅仅使用来自requests_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之类的内容会自动添加,但可能不会出现,但我不确定。)

斯托夫

问题:获取特定用户的库存

Cardmarket RESTful API文档(2.0版)

cardmarket.com API(2.0版,使用OAuth1)的Python包装器

Requests-OAuthlib:针对人类的OAuth


使用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)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Django使用python请求进行身份验证

使用Python请求进行Cookie身份验证

使用python和请求进行Instagram身份验证

尝试使用节点请求进行身份验证

使用请求进行身份验证后的Web抓取

使用Java http请求进行Twitch身份验证

使用带有护照 js 服务器的 python 请求进行身份验证

如何使用令牌身份验证对 Post 请求进行身份验证?

使用 python 请求进行身份验证 - Cookies ?有效载荷?还有什么?

无法通过请求进行身份验证:NoneType错误

使用ActiveResource和会话令牌对请求进行身份验证

外部身份验证提供程序和对 RESTful API 的请求进行身份验证

使用Windows身份验证对MVC4站点上的HTTP请求进行角度验证

如何使用Laravel Passport对访问字符串而不是标头中的访问令牌进行身份验证,对请求进行身份验证?

使用 Python 对 Google Calendar API 进行 OAuth 身份验证

403 服务器在使用soapui 获取azure 存储数据时无法对请求进行身份验证

如何使用AWS Web API和Lambda对无服务器Web请求进行身份验证?

通过POST使用请求库进行python身份验证

如何在ASP.NET MVC + Forms身份验证中对Ajax请求进行身份验证

Azure存储:403服务器无法对请求进行身份验证

Azure 服务器无法对请求进行身份验证

无法通过API 400错误请求进行身份验证

让我们通过Ajax请求进行聊天身份验证

Vue.js SSR检查用户已针对每个请求进行身份验证

Azure API服务器无法对请求进行身份验证

如何通过AAD对Azure服务管理请求进行身份验证

通过 Node-RED 对 http 请求进行 Google Bearer 身份验证

对findsequence服务请求进行身份验证HERE Maps API

针对Wordpress对node.js中的请求进行身份验证