Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 5/2011.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Erfahren Sie, wie die neue Authentifizierungsmethode von Amazon funktioniert, und integrieren Sie diese in eine Bücherverwaltung.

Techniken

VBA, REST

Voraussetzungen

Access 2000 und höher

Beispieldateien

Bücherverwaltung.mdb

Shortlink

www.access-im-unternehmen.de/799

Amazon Webservices mit OAuth nutzen

André Minhorst, Duisburg

Im Beitrag Amazon Webservices mit VBA nutzen (www.access-im-unternehmen.de/634) haben wir die technischen Grundlagen dazu geliefert, wie Sie unter VBA auf die Produktdatenbank von Amazon zugreifen können. Der Beitrag Bücherverwaltung (www.access-im-unternehmen.de/633) lieferte ein praktisches Beispiel für den Einsatz dieser Technik. In der Zwischenzeit hat sich einiges getan: Amazon hat eine zusätzliche Hürde eingebaut, die den Zugriff auf den Katalog verhindert. Der vorliegende Beitrag zeigt, wie Sie Anfragen an die Amazon Webservices signieren und wieder problemlos auf die Daten zugreifen können.

An dieser Stelle sei vorab erwähnt, dass Amazon den Zugriff auf seine Webservices an die Einhaltung der Nutzungsbedingungen knüpft. Diese besagen beispielsweise, dass die Abfrage von Produktdaten das Gewinnen von Kunden zum Ziel haben sollte - etwa, indem Sie die Produkte mithilfe dieser Informationen von Ihrer eigenen Webseite aus verlinken (damit ließe sich nebenher auch noch eine kleine Provision verdienen).

Ablauf

Bevor Sie die Dienste etwa über die Beispieldatenbank nutzen können, brauchen Sie einen Developer-Account, unter dem Sie die Anfragen absetzen können.

Der Rest ist prinzipiell das simple Zusammenstellen einer REST-Abfrage des Webservices, also das Versenden einer Abfrage, die wie ein Link aufgebaut ist und entsprechende Parameter enthält, und das Empfangen und Auswerten der Antwort des Webservices im XML-Format (bei diesem Vorgang kommen Methoden der Bibliothek Microsoft XML, vx.0 zum Einsatz - bitte daher die aktuellste verfügbare Version als Verweis hinzufügen). Gegenüber der Variante aus den oben erwähnten Beiträgen von 2008 kommt nun allerdings noch ein Schritt hinzu: Sie müssen die Parameterliste, also den wesentlichen Teil der Anfrage, signieren. Bei der Signatur handelt es sich um einen SHA256-verschlüsselten HMAC, also einen Hash-basierten Nachrichten-Authentifizierungs-Code. Diesen hängen Sie als weiteren Parameter an die Liste der Parameter an. Zum Erstellen der Signatur verwenden Sie neben der Parameterliste noch den nur Ihnen und Amazon bekannten geheimen Schlüssel. Amazon kann nach dem Erhalt Ihrer Anfrage anhand der Signatur prüfen, ob diese tatsächlich mit Ihrem geheimen Schlüssel signiert wurde.

Developer-Account holen

Amazon bietet eine ganze Reihe Webservices für die verschiedensten Bereiche an, zum Beispiel Anwendungs-Hosting, Backup und Speicherung, Datenbanken und E-Commerce. Alle werden mehr oder weniger beworben - nur Informationen über die Product Advertising API, die den Zugriff auf den Produktkatalog erlaubt, sind schwer zu finden. Sie finden über den folgenden Link direkt dorthin: aws.amazon.com/associates. Direkt dort können Sie sich auch registrieren und kurz danach auf Ihren Account zugreifen. Für den Zugriff auf den Produktkatalog benötigen Sie nur zwei Dinge: Ihre Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel.

Beides erhalten Sie, wenn Sie einem Link in der Begrüßungsmail nach der Anmeldung folgen. Wenn Sie einen Bereich wie den aus Abb. 1 vorfinden, sind Sie richtig.

pic002.png

Abb. 2: Daten für den Zugriff auf den Webservice

Request zusammenstellen

Der Kern der hier beschriebenen Lösung ist das Zusammenstellen eines Requests und die Auswertung der im XML-Format gelieferten Antwort. Der Request sieht beispielsweise wie folgt aus (in einer Zeile):

http://ecs.amazonaws.de/onca/xml

?AWSAccessKeyId=AKIAJJDXSEUYLWWOE27Q

&Operation=ItemSearch

&Power=Author%3Aminhorst

&ResponseGroup=Medium

&SearchIndex=Books

&Service=AWSECommerceService

&Timestamp=2011-09-11T10%3A37%3A55Z

&Version=2009-01-06

&Signature=2Fu1PG8ojlEK6RSodV1sTQUyLzEQ8%2FeFLWFUbSsL1so%3D

Die Funktion GetRequest aus Listing 1 erwartet drei Parameter:

Listing 1: Zusammensetzen des Requests

Public Function GetRequest(strSearch As String, intPage As Integer, strRequest As String) As Boolean

    Dim strDeveloperToken As String

    Dim strSignatureBase As String

    Dim strSignatureKey As String

    Dim strSignature As String

    Dim db As DAO.Database

    Dim strParameterliste As String

    Dim strOAuthHeader As String

    Dim objXMLHTTP As MSXML2.XMLHTTP

    Dim objxml As MSXML2.DOMDocument

    Dim I As Integer

    Dim strDomain As String

    strDeveloperToken = cDeveloperToken

    strDomain = "ecs.amazonaws.de"

    Set db = CurrentDb

    db.Execute "DELETE FROM tblParameters", dbFailOnError

    AddParameter "Service", "AWSECommerceService"

    AddParameter "Operation", "ItemSearch"

    AddParameter "SearchIndex", "Books"

    AddParameter "ResponseGroup", "Medium"

    AddParameter "Version", "2011-08-01"

    AddParameter "Timestamp", TimeStamp_Amazon

    AddParameter "Power", strSearch

    AddParameter "AssociateTag", "amisoft"

    If intPage > 1 Then

        AddParameter "ItemPage", intPage

    End If

    strParameterliste = "AWSAccessKeyId=" & cDeveloperToken & "&"

    strParameterliste = strParameterliste & GetParameters

    strSignatureBase = "GET\n" & strDomain & "\n/onca/xml\n" & strParameterliste

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.