0

Ich bin hoffnungslos fest auf den Versuch, Amazon MWS Products API anrufen. Insbesondere versuche ich this functionAmazon MWS Produkte API gibt 401 Fehler "Zugriff verweigert"

Es erfordert den Aufbau einer ziemlich komplizierten Antrag mit einer Unterschrift zu beantragen:

POST /Products/2011-10-01 HTTP/1.1 
Content-Type: x-www-form-urlencoded 
Host: mws.amazonservices.com 
User-Agent: <Your User Agent Header> 

AWSAccessKeyId=AKIAEXAMPLEFWR4TJ7ZQ 
&Action=ListMatchingProducts 
&MWSAuthToken=amzn.mws.4ea38b7b-f563-7709-4bae-87aeaEXAMPLE 
&MarketplaceId=ATVPDKIKX0DER 
&Query=0439708184 
&SellerId=A1IMEXAMPLEWRC 
&SignatureMethod=HmacSHA256 
&SignatureVersion=2 
&Timestamp=2012-12-12T22%3A23%3A50Z 
&Version=2011-10-01 
&Signature=V%2BEXAMPLERT%2Baj%2Fxwqo7y3PIifMFHeqFlNYW0EXAMPLEA%3D 

Ich baue diese Abfrage mit Hilfe dieser little library:

So String meine letzte url sieht so aus:

https://mws.amazonservices.com/Products/2011-10-01?AWSAccessKeyId=<MY_ACCESS_KEY>&Action=ListMatchingProducts&MarketplaceId=A1PA6795UKMFR9&Query=0439708184&SellerId=<SELLER_ID>&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2016-04-19T16%3A50%3A13Z&Version=2011-10-01&Signature=mZt3OhM14gwLdsQ%2Bhxz5UFMzr7m2U36DvZ7RG3dcsTI%3D 

Und es scheint, dass die URL-Zeichenfolge korrekt erstellt wird. Ich denke schon, denn wenn ein Parameter fehlt oder falsch ist, gibt die API 400 Fehler zurück mit der Erklärung, dass dieser Parameter ungültig ist. Gleiches gilt für die Unterschrift. Wenn die Signatur falsch ist, gibt die API einen Fehler zurück, der eindeutig angibt, dass die Signatur ungültig ist. Also, wieder, ich denke, dass die URL in Ordnung sein muss. Die API gibt jedoch einen 401-Fehler und eine HTML-Seite zurück, die wie folgt aussieht:

Zugriff verweigert. Und ich habe keine Ahnung warum. Ich habe mehrere Stunden damit verbracht, herauszufinden, was los ist. Kann mir jemand helfen?

Antwort

5

Der Grund für das Problem war, dass ich amerikanische https://mws.amazonservices.com statt der europäischen https://mws-eu.amazonservices.com rief. Es wäre wirklich nett, wenn Amazon Antwort mehr Kontext über den Fehler als Access denied

geben würde