我正在尝试通过 Etsy 开发人员 API 访问 Etsy 销售数据。这需要身份验证,详细信息请参见此处。然后我尝试在 R 中执行这些身份验证步骤,使用httr
:
etsy_endpoint <- oauth_endpoint(request = "https://openapi.etsy.com/v2/oauth/request_token",
authorize = NULL,
access = "https://openapi.etsy.com/v2/oauth/access_token")
etsy_app <- oauth_app("etsy",
key = api_key,
secret = shared_secret)
token <- oauth1.0_token(
etsy_endpoint,
etsy_app
)
但这似乎不起作用,因为根据 Etsy 文档,需要生成临时请求令牌才能获得所需的授权 URL?(文档中的此步骤)
// instantiate the OAuth object
// OAUTH_CONSUMER_KEY and OAUTH_CONSUMER_SECRET are constants holding your key and secret
// and are always used when instantiating the OAuth object
$oauth = new OAuth(OAUTH_CONSUMER_KEY, OAUTH_CONSUMER_SECRET);
// make an API request for your temporary credentials
$req_token = $oauth->getRequestToken("https://openapi.etsy.com/v2/oauth/request_token?scope=email_r%20listings_r", 'oob', "GET");
print $req_token['login_url']."\n";
我也尝试过使用该ROAuth
软件包,但遇到了类似的问题。
对于其他网站,在我的示例中似乎有一个授权 URL 将用作请求/访问,但对于 Etsy,这似乎是由令牌请求动态生成的?
作为参考, Python 中的此源代码使用 Etsy 执行身份验证,但我找不到任何 R 函数来镜像某些使用的函数,并且我没有 OAuth 知识来自己复制它们。
提前致谢!
编辑:
从上面的代码收到的错误如下。
Error in parse_url(url) : length(url) == 1 is not TRUE
我认为这是因为端点参数authorize = NULL
。
例如,如果我把authorize = "https://openapi.etsy.com/v2/oauth"
. 然后打开一个浏览器实例并下载一个通用文件 (125B),但实际上什么也没发生。
作为另一个更新,原始代码是一个可重现的示例,但需要打开一个 Etsy 开发者帐户(免费)才能获取相关密钥。
如果有人能够尝试复制此问题,则可以在此处创建开发者帐户
编辑2:
如果其他人试图注册以获取密钥,以下步骤对我来说适用于新帐户:
我注册了一个 Etsy 帐户(使用新电子邮件),然后将我定向到“创建新应用程序页面”。
烦人的是,您必须从这里确认您的电子邮件并启用两因素身份验证。
然后你就可以填写表格了,我用下面的来测试一下:
- 名称:测试应用程序。
- 描述:“测试 Oauth 身份验证”。
- 类型:卖家工具。
- 用户:只有我自己。
- 商业:没有。
- 以下任何一项:读取销售数据。
此过程有效,然后将我带到带有两个安全密钥的页面。