0

我正在尝试通过 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 身份验证”。
  • 类型:卖家工具。
  • 用户:只有我自己。
  • 商业:没有。
  • 以下任何一项:读取销售数据。

此过程有效,然后将我带到带有两个安全密钥的页面。

4

0 回答 0