1

我正在尝试创建一个使用 python3 访问 Etsy api 的应用程序,我正在 idle3 中测试我的非常基本的代码,我需要获取一个 oauth 令牌,我已经查看了 etsy 文档here,但所有内容都是针对 php 描述的。下面是我在 idle3 中的代码(我已经更改了我的密钥);

>>>payload = { 'api_key' : 'pvhkg9y4e7', 'shared_secret' : 'ib5msimmo', 'scope' : 'transactions_r,listings_w,billing_r,treasury_r'}

>>> url = "https://openapi.etsy.com/v2/oauth/request_token"

>>> r = requests.get(url, params=payload)

>>> print(r.url)
https://openapi.etsy.com/v2/oauth/request_token?api_key=pvhkg9y4e7&scope=transactions_r%2Clistings_w%2Cbilling_r%2Ctreasury_r&shared_secret=ib5msimmo

>>> r.text

>>>'oauth_problem=parameter_absent&oauth_parameters_absent=oauth_consumer_key%26oauth_signature%26oauth_signature_method%26oauth_nonce%26oauth_timestamp

我需要帮助来创建正确的 URL 我认为我需要将我的有效负载措辞更改为 oauth_consumer_key、oauth_signature,但我不明白如何包含 oauth_signature_method(我正在使用 request.get)或 oauth_timestamp,我不知道是什么oauth_nonce 是什么?

我打算将整个合并到一个烧瓶应用程序中,所以我在这里查看了 flask_oauth但我不确定这是否会给我时间戳和随机数。非常感谢所有建议,我正在关注 miguel grinberg 的烧瓶教程,我的 etsy 应用程序需要这样的教程!有什么建议么

我也试过 request_oauthlib 但得到了这个;

>>> from requests_oauthlib import OAuth1

>>>Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    from requests_oauthlib import OAuth1
ImportError: No module named 'requests_oauthlib'

问候保罗

4

1 回答 1

2

我写信给etsy开发人员,他们回来了一些php代码,我对python知之甚少,但没有PHP,所以我回到谷歌搜索,回到这里并使用以下代码;

import requests
from requests_oauthlib import OAuth1
request_token_url = 'https://openapi.etsy.com/v2/oauth/request_token?scope=transactions_r&listings_w&billing_r&treasury_r'
consumer_key = 'api_key'
consumer_secret = 'secret_key'
oauth = OAuth1(consumer_key, client_secret=consumer_secret)
r = requests.post(url=request_token_url, auth=oauth)
r.content

login_url=https%6%3fthe%26address%26you%2fwant%34goodluck

它奏效了!!!!!!我好开心!!!如果您遇到像我这样的其他菜鸟,也许他们可以帮助他们使用此代码。

在终端中我创建了一个 virtualenv,然后我 pip 安装了请求和 request_oauthlib,然后在 python shell 中执行了上面的脚本。

问候保罗

于 2018-09-24T20:03:05.393 回答