通过API更新Etsy列表

时间:2017-09-26 13:22:36

标签: c# oauth etsy devdefined-oauth

使用DevDefined.OAuth我试图更新Etsy上的现有列表。 这是我的代码:

_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);

但我一直收到403回复,并留言#34; signature_invalid"。

当我使用相同的方式在Etsy上创建列表时(除了方法是POST,而不是PUT),一切正常。

我错过了什么吗?

2 个答案:

答案 0 :(得分:0)

您可以使用ETSY API方法updateInventory在ETSY上更新您的产品详情

$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上更新您的产品

答案 1 :(得分:0)

这取决于你的意思更新......下面有很多简化的回复,在Etsy电话上创建初始列表:

...
request.Resource = "/listing"
request.Method = Method.POST;
...

然后,要更新包含库存和价格的商品,您必须确保拥有来自Etsy的商品详情和产品标识,并确保在请求数据中设置了此标识。

要获取product_identifier和提供ID,请拨打GET:

...
request.Resource = "/listings/my-etsy-listing-id/inventory"
request.Method = Method.GET;
...

要进一步更改例如股票或价格,请进行以下调用:

...
request.Resource = "/listings/my-etsy-listing-id/inventory"     
request.Method = Method.PUT;
...

更新标题/说明...致电

...
request.Resource = "/listing/my-etsy-listing_id"
request.Method = Method.PUT;
...

正如我在开头所说,这非常简单。在Etsy中需要发送大量数据才能完成工作。