Amazon Product Advertising API – Authentifizierung
10 07 2009Amazon plant zum 15.08.2009 eine meiner Meinung nach recht komplizierte Änderung an der XML-Schnittstwelle zum Abfragen von Amazon-Daten.
Die Product Advertising API (ehemals Amazon Web Service) benötigt ab dem 15.08.2009 eine Authentifizierung sonst bekommt man keine Daten mehr ausgeliefert. Die Authentifizierungsmethode ist recht schwer zu verstehen finde ich, deshalb poste ich hier mal meine Lösung. Ist nicht gerade die eleganteste Lösung aber es müsste funktionieren. Aber ich übernehme keinen Gewähr
Die Abfrage ($api_url) ist eine Beispielabfrage und muss durch Eure eigene ersetzt werden. Aussderm müssen der “Access Key” und der “Secret Access Key” von Euch eingetragen werden.
Ganz wichtig ist dass die URL “urlencoded” sein muss. Und zwar aus dem UTF8-Zeichensatz heraus. Soll heissen erst den String (z.B. das übergebene Suchwort) nach UTF8 umwandeln und dann “urlencoden”.
Zum Beispiel:
$query_keyword = “Hängematte”;
$query_keyword = urlencode(utf8_encode($query_keyword));
Query:
http://webservices.amazon.de/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=xxx&Operation=ItemSearch&Keywords=”.$query_keyword.”&ResponseGroup=Medium&SearchIndex=Electronics&ItemPage=1
Solltet Ihr nicht aus Deutschland kommen dann muss noch die Local-Zone angepasst werden. Also in der URL und beim “$host” einfach .de durch Eure Local-Zone ersetzen.
Die Ergebnis-URL muss noch urlencoded werden und kann dann direkt z.B. mit simple_load_file geparst werden.
Also viel Spass damit und wenn es Fragen oder Anregungen gibt, immer her damit! Die Doku zur Amazon Product Advertising API ist übrigens auch recht schwer zu verstehen finde ich.
$api_url = "http://webservices.amazon.de/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=ACCESS_KEY&Sort=-price&Operation=ItemSearch&Keywords=KEYWORD&ResponseGroup=Medium&SearchIndex=SEARCH_INDEX&ItemPage=1"; ############################################################################################# ## Amazon Product Advertising API Authentifizierung ######################################### ############################################################################################# function amazon_url_signer($raw_amazon_url){ $file_03_01 = $raw_amazon_url."&Version=".date("Y-m-d"); $file_03_02 = $file_03_01."&Timestamp=".str_replace(":", "%3A", str_replace("+00:00", "", gmdate("c")."Z")).""; $file_03_03 = str_replace(",", "%2C", $file_03_02); $file_03_04 = str_replace(";", "%3B", $file_03_03); $file_03_05 = parse_url($file_03_04); $file_03_06 = explode("&", $file_03_05["query"]); asort($file_03_06); for($i=0; $i < count($file_03_06); $i++){ $file_03_06 = implode("&", $file_03_06); } $uri = "/onca/xml"; $host = "webservices.amazon.de"; $method = "GET"; $file_03_07 = $method."\n".$host."\n".$uri."\n".$file_03_06; $file_03_08 = base64_encode(hash_hmac('sha256',$file_03_07,'SECRET_KEY',true)); $file_03_09 = str_replace("%7E", "~", rawurlencode($file_03_08)); $file_03_xx = $file_03_04."&Signature=".$file_03_09; return $file_03_xx; } ############################################################################################# $file_for_xml = amazon_url_signer($api_url);
Kategorien : Allgemein, PHP





