2017-09-26 1 views
0

En utilisant DevDefined.OAuth J'essaie de mettre à jour la liste existante sur Etsy. Voici mon code:Mettre à jour la liste Etsy via l'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); 

Mais je reçois 403 réponse tout le temps avec le message "signature_invalid".

Lorsque je crée une liste sur Etsy de la même manière (sauf que la méthode est POST, pas PUT), tout fonctionne correctement.

Ai-je raté quelque chose?

Répondre

0

Vous pouvez utiliser la méthode API ETSY updateInventory pour obtenir vos listes de produits mis à jour sur 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 
); 

Vous pouvez transmettre les données de produit comme JSON dans les champs de product_data de $ pour obtenir vos produits mis à jour sur Etsy