使用DevDefined.OAuth更新Etsy列表通过API

问题描述:

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

_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响应所有的与消息“signature_invalid”时间。

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

我错过了什么吗?

您可以使用API​​ Etsy的方法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的

你的产品