【发布时间】:2021-01-10 00:02:09
【问题描述】:
前提
我正在将我的产品配置数据库与我的 POS 和各种电子商务网站链接起来。拼图中的最后一个链接是连接到 Etsy。他们的指南 (https://www.etsy.com/developers/documentation/reference/listing) 专门针对 PHP,但我正在使用 python 3.7。
状态
由于这个问题,我已经能够成功获得所需的凭据:How to add a new item using Python Etsy HTTP API methods?我现在拥有以下凭据:
oauth_tokenoauth_token_secretoauth_consumer_keyverifierkey_stringshared_secret
我的尝试
我尝试同时使用python_etsy 和etsy_python,但两者似乎都已被废弃且不完整,每次都会产生异常。我尽我最大的能力尝试解决出现的每个问题,但我迷失了。
正如question linked above 的答案中所建议的那样,我尝试使用OAuth1Session 对象。
>>> etsy = OAuth1Session(
... key_string,
... client_secret=shared_secret,
... resource_owner_key=oauth_token,
... resource_owner_secret=oauth_token_secret)
>>> esty.get('https://openapi.etsy.com/v2/users/__SELF__')
>>> response.status_code
403
>>> response.text
'oauth_problem=token_rejected'
我只是不知道如何正确使用给定的凭据才能成功调用 Etsy API。
即使在定义OAuth1Session 对象etsy 时添加signature_type=SIGNATURE_TYPE_QUERY 也会产生相同的结果。
我将此作为一个新问题发布,因为question linked above 专门用于使用 API 添加新项目,而我正在寻找有关解释和转换 PHP 示例以在 Python 中使用的一般说明。这是我对其他 API 所做的并取得了很好的成功,但这个特定的 API 已经引发了循环。
verifier 在哪里玩?
--更新--
代替oauth 会话,我使用requests.get 如下:
>>> import requests
>>> import uuid
>>> from datetime import datetime
>>> url = 'https://openapi.etsy.com/v2/oauth/access_token'
>>> params = {
... 'oauth_consumer_key': {oauth_consumer_key},
... 'oauth_signature': {verifier},
... 'oauth_signature_method': {method},
... 'oauth_nonce': str(uuid(uuid1()),
... 'oauth_timestamp': datetime.timestamp(datetime.utcnow())
... 'oauth_token': {oauth_token}
...}
>>> token_response = requests.get(url,params=params)
>>> print(rrr.status_code,rrr.text)
400 oauth_problem=verifier_invalid
我使用oauth_signature_method 的以下每个值尝试了上述操作:
- '明文'
- 'RSA-SHA1'
- 'HMAC-SHA1'
每个值产生相同的结果。我还尝试将verifier 放在oauth_nonce 参数中
【问题讨论】:
标签: python-3.x api https etsy