Laden...

Amazon MWS Product API - Access denied

Erstellt von Charly vor 7 Jahren Letzter Beitrag vor 7 Jahren 3.245 Views
C
Charly Themenstarter:in
31 Beiträge seit 2014
vor 7 Jahren
Amazon MWS Product API - Access denied

Hallo,

ich beschäftige mich gerade mit der Products API von Amazon und möchte darüber Daten auslesen. Ich habe mir die notwendigen Keys etc erstellt und diese über das Scratchpad von Amazon getestet. Dort bekomme ich Ergebnisse. Jetzt habe ich die selben Daten für eine C# Applikation genommen und bekomme immer ein Access denied zurück:

<?xml version="1.0"?>
<ErrorResponse xmlns="http://mws.amazonservices.com/schema/Products/2011-10-01">
  <Error>
    <Type>Sender</Type>
    <Code>AccessDenied</Code>
    <Message>Access denied</Message>
  </Error>
  <RequestID>5be5045b-bacc-49da-9f0f-af78aa13c361</RequestID>
</ErrorResponse>

Der Request gibt eine RequestID zurück. Gibt es irgendwo im Amazon eine Möglichkeit noch mehr Details mit Hilfe dieser ID abzurufen (außer Access denied) ?

Mein C# Ansatz:

            string URL_ENDPOINT = "https://mws.amazonservices.com/Products/2011-10-01";
            string APP_NAME = "";
            string APP_VERSION = "";
            string AWS_ACCESSKEY = "myaccesskey";
            string AWS_SECRETKEY = "mysecret";
            string AWS_MARKETPLACEID = "A1PA6795UKMFR9";
            string SELLER_ID = "mysellerID";
            string ASIN = "B000LRUR14";

            ASINListType type = new ASINListType();
            List<string> ASINList = new List<string>();
            ASINList.Add(ASIN);
            type.ASIN = ASINList;

            try
            {
                MarketplaceWebServiceProductsConfig config = new MarketplaceWebServiceProductsConfig();
                config.ServiceURL = URL_ENDPOINT;
                config.SignatureMethod = "HmacSHA256";
                config.SignatureVersion = "2";

                GetCompetitivePricingForASINRequest request = new GetCompetitivePricingForASINRequest();
                request.MarketplaceId = AWS_MARKETPLACEID;
                request.ASINList = type;
                request.SellerId = SELLER_ID;

                MarketplaceWebServiceProductsClient client = new MarketplaceWebServiceProductsClient(APP_NAME, APP_VERSION, AWS_ACCESSKEY, AWS_SECRETKEY, config);
                GetCompetitivePricingForASINResponse response = client.GetCompetitivePricingForASIN(request);
            }
            catch (MwsException ex)
            {
                MessageBox.Show(ex.ToString());
            }

Die Daten funktionieren über's Web Tool von Amazon, nicht aber über die C# Applikation. Ich habe auch nichts gefunden wo man einen Applikationsnamen eintragen muss. Vielleicht muss ich diesen noch irgendwo freigeben ?

Hat jemand eine Idee ? Ich würde mich über Tipps freuen.

W
872 Beiträge seit 2005
vor 7 Jahren

Ich würde mittels Fiddler vergleichen, welche Daten via dem Scratchpad und via Deiner Applikation gesendet werden.

C
Charly Themenstarter:in
31 Beiträge seit 2014
vor 7 Jahren

Danke für den Tipp mit Fiddler. Auf meiner Programmseite kann ich das natürlich abfangen. Das Scratchboard schickt die HTTP Post Abfrage aber auf Serverebene raus, so dass ich da nicht ran komme.

Kennt Ihr das ? Man sucht 24 Stunden nach dem Fehler, hat bei Google alles rauf und runter gesucht und kommt dann per Zufall auf die dumme Lösung.

string URL_ENDPOINT = "https://mws.amazonservices.de/Products/2011-10-01";

Anstatt der .com die .de nehmen, dann klappt es auch.

Damit hat das Forum wenigstens ein funktionierendes Beispiel für die Abfrage bei Amazon für die suchende Nachwelt. 😃

W
872 Beiträge seit 2005
vor 7 Jahren

Du kannst mit dem Fiddler auch HTTPS mitschneiden - das Vorgehen wird hier vorgestellt.