首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过API更新Etsy列表

通过API更新Etsy列表
EN

Stack Overflow用户
提问于 2017-09-26 21:22:36
回答 2查看 1.3K关注 0票数 0

使用DevDefined.OAuth,我正在尝试更新Etsy上的现有列表。下面是我的代码:

代码语言:javascript
复制
_consumerContext = new OAuthConsumerContext
        {
            ConsumerKey = _apiKey,
            ConsumerSecret = _apiSecret,
            SignatureMethod = SignatureMethod.HmacSha1
        };

_session = new OAuthSession(_consumerContext, "https://openapi.etsy.com/v2/oauth/request_token?scope=transactions_r%20email_r%20listings_r%20transactions_w%20listings_w",
            "https://www.etsy.com/oauth/signin",
            "https://openapi.etsy.com/v2/oauth/access_token");

            _accessToken = new TokenBase();
            _accessToken.ConsumerKey = _apiKey;
            _accessToken.Token = token;
            _accessToken.TokenSecret = tokenSecret;

            IConsumerRequest request = _session.Request(_accessToken)
                .Put()
                .ForUri(new Uri(string.Format("https://openapi.etsy.com/v2/listings/{0}", listing_id)));

            request.Context.QueryParameters.Add("listing_id", listing_id.ToString());
            request.Context.QueryParameters.Add("title", "New title");

            string response = ConsumerRequestExtensions.ReadBody(request);

但是我一直收到消息"signature_invalid“的403响应。

当我用同样的方法在Etsy上创建清单时(除了方法是POST,而不是PUT),一切都很好。

我是不是遗漏了什么?

EN

回答 2

Stack Overflow用户

发布于 2018-04-05 22:15:57

这取决于你所说的更新是什么意思...为了在Etsy call上创建初始列表,下面的响应非常简单:

代码语言:javascript
复制
...
request.Resource = "/listing"
request.Method = Method.POST;
...

然后,要更新包含股票和价格的列表,您必须确保拥有来自Etsy的列表的产品id和产品标识符,并确保在请求数据中设置了这一项。

要获取product_identifier和产品id,请执行get调用:

代码语言:javascript
复制
...
request.Resource = "/listings/my-etsy-listing-id/inventory"
request.Method = Method.GET;
...

要对例如Stock或Price进行进一步更改,请进行以下调用:

代码语言:javascript
复制
...
request.Resource = "/listings/my-etsy-listing-id/inventory"     
request.Method = Method.PUT;
...

要更新标题/描述...打电话

代码语言:javascript
复制
...
request.Resource = "/listing/my-etsy-listing_id"
request.Method = Method.PUT;
...

正如我在开始时所说的,这非常简单。在Etsy中,你需要发送大量的数据来做事情。

票数 1
EN

Stack Overflow用户

发布于 2017-11-20 21:09:30

您可以使用ETSY API方法updateInventory来更新ETSY上的产品清单

代码语言:javascript
复制
$oauth = new OAuth(API KEYSTRING, API SHARED STRING);                        
$oauth->setToken($oauth_token, $oauth_token_secret);
$data = $oauth->fetch(
"https://openapi.etsy.com/v2/listings/$listing_id/inventory", [
'products' => $product_data
  'sku_on_property'      => ''
 ],
 OAUTH_HTTP_METHOD_PUT
 );

您可以在$product_data字段中将产品数据作为JSON传递,以便在ETSY上更新您的产品

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46427768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档