Wenn Sie ein Abonnement des Magazins 'Access im Unternehmen' besitzen, können Sie sich anmelden und den kompletten Artikel lesen.
Anderenfalls können Sie das Abonnement hier im Shop erwerben.
ebay-Zugriff mit Access
Bereits im Jahr 2009 haben wir gezeigt, wie Sie von Access aus Daten von ebay auslesen und selbst Angebote einstellen. Über die Jahre ändern sich jedoch die Mechanismen einer solchen Online-Schnittstelle, also schauen wir uns in diesem Beitrag an, wie der aktuelle Zugriff auf ebay aussieht und wie Sie diesen von einer Access-Anwendung aus realisieren. Dazu legen wir einen neuen Benutzer- und Entwickler-Account an und erstellen dann die notwendigen Objekte, um von Access aus auf die Daten zuzugreifen.
Für das Verständnis der folgenden Abhandlung ist es wichtig zu wissen, dass Sie sowohl einen normalen eBay-Account als auch einen Entwickler-Account benötigen.
Neuen ebay-Account anlegen
Falls Sie noch kein ebay-Konto haben, öffnen Sie einfach die ebay-Seite unter www.ebay.de. Dort finden Sie ganz unten unter Kaufen|Neu anmelden bei ebay alle notwendigen Informationen. Kurz gefasst klicken Sie dort auf Jetzt bei eBay anmelden und landen auf der Seite signin.ebay.de. Hier geben Sie Ihre Daten auf der Registerseite Neu anmelden ein (s. Bild 1).
Bild 1: Neu registrieren bei ebaySie erhalten dann einen eindeutigen, automatisch generierten Benutzernamen wie andminhors_0, den Sie aber auch durch einen selbst gewählten Benutzernamen überschreiben können. Damit sind die Arbeiten auf dieser Seite bereits erledigt. Die meisten allgemeinen Informationen finden Sie nun im Bereich Mein eBay.
Neuen Entwickler-Account anlegen
Nun öffnen Sie die Webseite developer.ebay.com und damit das ebay-Entwicklerprogramm. Auch hier registrieren wir uns zunächst, und zwar durch einen Klick auf Sign In/Join. Auch dort nutzen wir ein Formular, um unsere Daten einzugeben (s. Bild 2). Damit wir die beiden Benutzer nachher unterscheiden können, habe ich dem Benutzernamen beim Developer-Programm die Zeichenfolge _api angehängt.
Bild 2: Neu registrieren als Developer bei ebayApplication Keys holen
Im folgenden Dialog geben Sie für die Vergabe der sogenannten Application Keys, die Sie später benötigen, den Namen der geplanten Anwendung ein – hier kurz und bündig accessBay (s. Bild 3). Nun erscheinen unten Links zum Erstellen von Keysets für Sandbox- und Production-Modus. Sie entscheiden selbst, ob Sie zunächst in der Sandbox üben wollen oder direkt auf echte ebay-Daten zugreifen wollen.
Bild 3: Anwendungsname angebenNach der Auswahl des Eintrags Production fragt ebay einige weitere Daten zu Ihrer Person ab, um Sie kontaktieren zu können, falls es im Rahmen der Benutzung der Keys zu Problemen kommt (s. Bild 4).
Bild 4: Angabe weiterer Informationen
Danach erhalten Sie eine Übersicht, über die Sie wahlweise auch noch ein Keyset für den Bereich erstellen können, den Sie noch nicht berücksichtigt haben – also wahlweise Sandbox oder Production (s. Bild 5). Gleichzeitig weist ebay im Falle des Production-KeySet darauf hin, dass Sie 5.000 Aufrufe pro Tag an die ebay-Api absetzen können. Für mehr ist eine Ansicht der Anwendung durch das ebay-Team erforderlich.
Bild 5: Übersicht mit den Application Keys für den Sandbox- und für den Production-ModusUser Token erstellen
Nun benötigen Sie noch einen User Token für das Keyset, das Sie verwenden möchten. Dazu klicken Sie rechts neben App ID auf den Link User Tokens.
Der Clou des User Tokens ist, dass es sich dabei um einen Schlüssel handelt, der im Kontext eines ebay-Benutzerkontos erstellt wird und der sich auf die zu programmierende Anwendung bezieht. Da wir eine Anwendung nur für uns selbst programmieren möchten, ist dies die richtige Option für uns. Die Alternative wäre, einen Token anzufragen, der eine Anwendung ermöglicht, die beliebige ebay-Nutzer verwenden können, ohne dass jeder einzelne sich einen User Token holen muss – die Benutzer müssen sich dann lediglich selbst anmelden.
Den Token erhalten wir über den Dialog aus Bild 6. Hier klicken Sie auf Sign in to Production (sofern Sie einen Token für den Production-Modus anfragen – sonst würde hier stehen Sign in to Sandbox. Dazu müssten Sie allerdings auch noch einen neuen Sandbox-User anlegen). Die gewünschte Umgebung können Sie über die Optionen oben auf der Seite auswählen.
Bild 6: Erstellen eines User TokensIm folgenden Dialog fragt ebay nach weiteren Daten zu Ihrer Person, also zu der Person, die das Entwickler-Konto nutzt. In diesem Fall werden die bestehenden Daten um die Adressdaten ergänzt.
Anschließend erscheint der Anmeldedialog der ebay-Seite selbst, also nicht der der Entwicklerplattform. Hier melden Sie sich nun mit den Zugangsdaten des eingangs erstellten (oder bereits vorhandenen) ebay-Benutzers an, in dessen Namen die App auf ebay zugreifen soll.
Im folgenden Dialog klicken Sie noch auf I agree und erhalten dann eine Seite später Zugriff auf Ihren User Token, mit dem Sie im Namen des angegebenen ebay-Benutzerkontos über Ihre App auf ebay zugreifen (s. Bild 8). Der Token ist die recht lange, kryptische Zeichenfolge, die Sie für folgende Anwendungszwecke immer komplett benötigen.
Bild 7: Registrierung eines Sandbox-UsersDamit haben Sie alle Daten zusammen, die Sie für den Zugriff von einer Access-Datenbankanwendung auf ebay benötigen. Nun erstellen wir die Access-Anwendung selbst und programmieren eine kleine Benutzeroberfläche sowie den Code für den Zugriff auf die ebay-Schnittstelle per XML.
Sandbox-User anlegen
Das Anlegen eines Sandbox-Users erledigen Sie ebenfalls vom obigen Dialog aus. Dort wählen Sie unter Environment die Option Sandbox und finden unter der Schaltfläche Sign in to Sandbox den Link Register a new Sandbox user vor. Der Dialog hier sieht natürlich anders aus als der zum Registrieren eines »echten« ebay-Benutzers (s. Bild 7). Hier sind nur wenige Informationen nötig, dafür aber auch einige, die Sie bei der herkömmlichen Registrierung nicht erhalten. Wichtig für Entwickler, die gegebenenfalls eine App für den Zugriff auf andere als die deutsche ebay-Seite bauen wollen, ist die Option Registration Site. Hier können Sie auch United States (US), Motors oder andere Länder auswählen. Diese Option werden Sie später in der Tabelle tblOptionen im Feld SiteID vorfinden.
Bild 8: Dialog mit dem fertigen User Token
Merken Sie sich, dass der Benutzername des Sandbox-Users mit TESTUSER_ beginnt.
Tabelle zum Speichern der Accountdaten
Nun haben wir bereits einige Daten, die wir der Developer-Seite von ebay entnehmen und in unserer Anwendung speichern wollen – die DevID, AppID, CertID und den Token jeweils für einen Produktiv- und einen Sandbox-Account. Dazu legen wir eine Tabelle namens tblOptions an, die im Entwurf wie in Bild 9 aussieht.
Bild 9: Tabellen zum Speichern der OptionenNeben den Account-Daten nimmt die Tabelle noch einige weitere Informationen auf. Dazu gehört etwa ein Ja/Nein-Feld namens Sandbox, das festlegt, ob Sie gerade den Sandbox- oder den Produktiv-Account für den Zugriff über die Anwendung nutzen wollen.
Weitere Felder legen allgemeine Eigenschaften für den Zugriff auf die ebay-Plattform fest, zum Beispiel um zu definieren, wie diese auf die Übergabe fehlerhafter XML-Elemente in Anfragen reagieren soll, in welcher Sprache Fehlermeldungen auszugeben sind, in welcher Version die XML-Anfragen formuliert sind, auf welche ebay-Seite zugegriffen werden soll und welche URLs dazu verwendet werden – Letzteres jeweils wieder für den Sandbox- und den Production-Betrieb.
Und auch das Land, in dessen Kontext die Abfrage abgesetzt wird, und die Währung benötigen wir später zum Zusammenstellen der Anfragen.
Formular zum Bearbeiten der Einstellungen
Damit Sie die Einstellungen komfortabel bearbeiten können, legen wir ein passendes Formular namens frmOptionen an (s. Bild 10). Es enthält die Tabelle tblOptionen als Datenherkunft und zeigt alle Felder dieser Tabelle an – aufgeteilt in verschiedene Bereiche.
Bild 10: Formular für die Eingabe der OptionenMit dem Kontrollkästchen, das an das Feld Sandbox gebunden ist, legen Sie fest, ob Sie gerade mit den Sandbox- oder den Produktiv-Daten arbeiten möchten.
Je nach Auswahl werden zur besseren Kennzeichnung die nicht verwendeten Elemente in den Bereichen Sandbox-Account beziehungsweise Production-Account deaktiviert. Wenn Sie nun die Informationen von der ebay-Developer-Webseite in die entsprechenden Felder des Formulars übertragen, sind wichtige Voraussetzungen für den Zugriff schon einmal gegeben.
Anschließend schauen wir und die übrigen benötigten Werte an:
- WarningLevel: Stellen wir auf High ein, damit wir auch Meldungen erhalten, wenn wir veraltete oder ungültige Elemente in unseren XML-Anfragen verwenden. Dies sollten Sie für den Produktivzugriff mit vielen Anfragen auf Low einstellen.
- ErrorLanguage: Sprache, in der Fehlermeldungen ausgegeben werden. de_DE wäre sicher komfortabel, um schnell alles zu verstehen, aber meist hilft das nicht weiter und Sie müssen nach Möglichkeiten für das Beheben von Fehlern googeln. Da es wesentlich mehr englischsprachige Quellen zu diesem Thema gibt, ist also en_US die bessere Wahl.
- Item_Country: Code aus zwei Buchstaben, der angibt, in welchem Land der Benutzer registriert ist – in unserem Fall also DE, AT oder CH (weitere siehe http://developer.ebay.com/devzone/xml/docs/reference/ebay/types/CountryCodeType.html).
- Item_Currency: Code aus drei Buchstaben, der die Angebotswährung angibt, also etwa EUR (weitere Möglichkeiten hier: http://developer.ebay.com/devzone/xml/docs/reference/ebay/types/CurrencyCodeType.html).
- SiteID: ebay-Seite, auf die zugegriffen werden soll. Hier gibt es die verschiedenen nationalen Seiten, aber auch spezielle Seiten wie Motors. Für Deutschland 77, Österreich 16, Schweiz 193 – weitere siehe hier: http://developer.ebay.com/devzone/xml/docs/reference/ebay/extra/AddItm.Rqst.Itm.St.html.
- Version: ebay wird ständig weiterentwickelt, und somit auch die Programmierschnittstelle. Mit der Versionsnummer geben Sie an, gegen welche Schnittstelle Sie programmieren. Die Schnittstelle darf nicht älter als 18 Monate sein. Den Plan für die niedrigste aktuell unterstützte Version finden Sie hier: http://developer.ebay.com/devzone/xml/docs/HowTo/eBayWS/eBaySchemaVersioning.html#VersionSupportSchedule
- Vers.Categories: Version der Kategorie-Daten
Verschiedene APIs
ebay bietet verschiedene Programmierschnittstellen an, die Sie mit entsprechenden XML-Anfragen aufrufen können. In diesem Artikel schauen wir uns zwei davon an: die Shopping-API, die den Zugriff auf angebotene Artikel erlaubt, sowie die Trading-API, mit der Sie selbst Artikel einstellen und alle weiteren Aufgaben erledigen können, die mit dem Handeln auf der ebay-Plattform zu tun haben.
Shopping-API: Artikel suchen
Die Shopping-API erlaubt beispielsweise das Suchen nach Artikeln. Um dies zu testen, wollen wir die gefundenen Artikel in einer Tabelle speichern, die wie in Bild 11 aussieht.
Bild 11: Tabelle zum Speichern von SuchergebnissenDas Formular zum Eingeben des Suchbegriffes und zur Ausgabe der Suchergebnisse besteht aus Haupt- und Unterformular. Das Unterformular verwendet die Tabelle tblSuchergebnisse als Datenherkunft und zeigt die drei Felder Artikel und Preis an (s. Bild 12). Außerdem stellen wir die Eigenschaft Standardansicht auf den Wert Datenblatt ein.
Bild 12: Unterformular zur Anzeige der SuchergebnisseDas Hauptformular enthält logischerweise das Unterformular. Außerdem soll es drei Steuerelemente zur Festlegung der Suchkriterien bieten:
- txtSuchbegriff: Dient zur Eingabe des Suchbegriffs.
- cboSortierung: Erwartet die Angabe einer Sortierung. Enthält eine Wertliste mit folgender Datensatzherkunft (Herkunftstyp auf Wertliste einstellen): "BestMatch";"Beste Treffer";"CurrentBid";"Aktuelles Gebot";"EndTime";"Angebotsende"
- txtAnzahlTreffer: Angabe der Anzahl der Suchergebnisse, welche die Anfrage zurückliefern soll.
Da die Parameter möglicherweise beim nächsten Aufruf nochmals verwendet werden sollen, wollen wir diese auch in der Tabelle tblOptionen speichern.
Dazu fügen Sie dieser die drei Felder Sortierung, AnzahlTreffer und Suchbegriff hinzu und binden erst das Formular frmArtikelsuche über die Eigenschaft Datenherkunft an die Tabelle tblOptionen und dann die drei Steuerelemente des Formulars an die neu hinzugefügten Felder.
Die Eigenschaften Datensatzmarkierer, Navigationsschaltflächen, Trennlinien und Bildlaufleisten stellen Sie für das Hauptformular auf den Wert Nein, die Eigenschaft Automatisch zentrieren auf Ja ein.
Wir fügen dem Formular außerdem drei Schaltflächen hinzu: Die erste startet die Suche und heißt cmdSuchen, die zweite soll den aktuell markierten Eintrag im Unterformular bei ebay öffnen und heißt cmdBeiEbayAnsehen und die dritte schließt das Formular (cmdOK). Das Formular sieht im Entwurf wie in Bild 13 aus.
Bild 13: Hauptformular für die Suche nach ebay-ArtikelnSuche programmieren
Nun brauchen wir nur noch ein wenig VBA-Code, der uns aus den Angaben in den drei Steuerelementen eine XML-Anfrage zusammenstellt, diese an ebay schickt und das Ergebnis in die Tabelle tblSuchergebnisse schreibt.
Den Start macht die Schaltfläche cmdSuche, über die wir die Suche aufrufen. Die für das Ereignis Beim Klicken hinterlegte Ereignisprozedur finden Sie in Listing 1.
Private Sub cmdSuchen_Click()
Dim db As DAO.Database
Dim strSuchbegriffe As String
Set db = CurrentDb
db.Execute "DELETE FROM tblSuchergebnisse"
strSuchbegriffe = Nz(Me!txtSuchbegriff)
If Len(strSuchbegriffe) = 0 Then
MsgBox "Bitte geben Sie einen Suchbegriff ein."
Exit Sub
End If
FindItemsAdvanced
Me!sfmSuchergebnis.Form.Requery
End Sub
Listing 1: Starten der Suche über die Schaltfläche cmdSuchen
Diese Methode löscht zunächst alle in der Tabelle tblSuchergebnisse gespeicherten Einträge. Dann speichert sie den Suchbegriff auf dem Textfeld txtSuchbegriff in der Variablen strSuchbegriffe. Ist das Feld leer beziehungsweise enthält es den Wert Null, wird dank der Funktion Nz eine leere Zeichenkette gespeichert.
Ist dies der Fall, meldet die Prozedur, dass noch kein Suchbegriff eingegeben wurde, und bricht die Prozedur ab. Anderenfalls ruft sie die Funktion FindItemsAdvanced auf. Diese soll die Suche ausführen und die Ergebnisse in der Tabelle tblSuchergebnisse speichern, damit der anschließende Aufruf der Requery-Methode des Unterformulars sfmSuchergebnis.Form diese im Unterformular anzeigt.
Die Funktion FindItemsAdvanced
Diese Funktion ist für das Zusammenstellen einer XML-Anfrage verantwortlich, die per HTTP-Request an die ebay-API übergeben wird und ein Ergebnis in Form eines XML-Dokuments zurückliefern soll. Dieses soll die Funktion dann mit einer weiteren Hilfsprozedur auswerten und die Ergebnisse in der Tabelle tblSuchergebnisse speichern.
Bei der vorherigen Version unserer Artikelabfrage von 2009 konnte man noch per einfachem REST-Aufruf, also einer einfachen URL mit ein paar Parametern, auf die Suche nach Artikeln zugreifen. Diese ist nun seit einigen Jahren veraltet und die dazu verwendeten Funktionen wurden aus der Shopping-Api in die Finding-Api übertragen.
Informationen über den grundlegenden Aufbau eines Requests an die Finding-API erhalten Sie unter folgender Adresse:
<b>http://developer.ebay.com/devzone/finding/Concepts/MakingACall.html</b>
Das heißt für uns, dass wir nicht mehr mit einer einfachen URL weiterkommen, die wir an ebay schicken, sondern wir müssen ein XML-Dokument mit den erforderlichen Informationen zusammenstellen.
Die speziellen Informationen über den Aufruf der API-Funktion findItemsAdvanced finden Sie hier:
http://developer.ebay.com/devzone/finding/CallRef/findItemsAdvanced.html
Die Funktion finden Sie in Listing 2. Sie deklariert jeweils ein Objekt des Typs DOMDocument: objRequest nimmt die XML-Anfrage auf, objResponse die XML-Antwort. strAppID soll die AppID für den aktuellen Einsatzzweck, also Sandbox oder Production, aufnehmen, die in der Tabelle tblOptionen gespeichert ist. intTrefferMax ist die über die Benutzeroberfläche festgelegte maximal gewünschte Anzahl an Suchergebnissen. intAnzahl soll die tatsächlich für die aktuell einzulesende Seite zu ermittelnde Anzahl der Suchergebnisse aufnehmen. Wenn der Benutzer beispielsweise 150 Suchergebnisse anfordert und der Wert aus cintAnzahlSeite lautet 100, wird intAnzahl beim Aufruf der ersten Seite den Wert 100 und beim Aufruf der zweiten Seite den Wert 50 aufnehmen. intSeite enthält die Nummer der aktuell einzulesenden Seite und intSeitenGesamt die maximale Anzahl der einzulesenden Seiten. Die Variable strURL nimmt die URL des aufzurufenden Dienstes auf. Die Variable intAnzahlSeite speichert die Anzahl der Suchergebnisse, die je Seite zurückgeliefert werden sollen. Sie wird als Erstes gefüllt, und zwar mit dem Wert des Feldes AnzahlSeite der Tabelle tblOptionen, die ja an das Formular gebunden ist.
Dies war die Leseprobe dieses Artikels.
Melden Sie sich an, um auf den vollständigen Artikel zuzugreifen.