Dokumentation
Entwickler-HubAPI-StatusUnterstützung

Tutorial: Automatisieren Sie Ihre SP-API-Aufrufe mit einem C#-SDK

Automatisieren Sie Ihre SP-API-Aufrufe mit dem Tokenaustausch und der Authentifizierung von Login with Amazon (LWA).

Dieses Tutorial enthält alle erforderlichen Informationen, um ein C#-SDK mit Login with Amazon (LWA) -Tokenaustausch und einer Authentifizierung zum Erstellen Ihrer Anwendung zu generieren.

Sie können dieses SDK verwenden, um Funktionen von Amazon Marketplace in Ihre Anwendungen zu integrieren, einschließlich des Zugriffs auf Produktinformationen, der Verwaltung von Bestellungen, der Bearbeitung von Lieferungen und mehr.

Tutorial

Das folgende Tutorial hilft Ihnen dabei, Ihr eigenes C#-SDK für die Automatisierung von SP-API-Aufrufen einzurichten.

Voraussetzungen

Um dieses Tutorial abzuschließen, benötigen Sie die folgenden Voraussetzungen:

  • Eine Hybrid- oder SP-API-App im Entwurfs- oder Veröffentlichungsstatus
  • IDE-Software (Integrierte Entwicklungsumgebung) (in dieser exemplarischen Vorgehensweise wird Visual Studio IDE unter Windows verwendet)

Bevor Ihre Anwendung eine Verbindung zur Vertriebspartner-API herstellen kann, müssen Sie sie registrieren und sie muss von einem Vertriebspartner autorisiert werden. Wenn Sie keine Hybrid- oder SP-API-App haben, folgen Sie den Schritten registriere dich als Entwickler, registriere deine Bewerbung, und Autorisierung von API-Anwendungen für Vertriebspartner. Kehren Sie dann zu diesem Tutorial zurück.

Richten Sie als Nächstes Ihren Arbeitsbereich für das Tutorial ein.

Schritt 1. Richte deinen Workspace ein

  1. Erstellen Sie auf Ihrem lokalen Laufwerk ein Verzeichnis für dieses Projekt und benennen Sie es SwaggerToCL.

  2. Laden Sie die folgenden Tools herunter.

  3. Führen Sie den folgenden Befehl aus, um den Swagger Code Generator herunterzuladen:

    wget https://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/2.4.13/swagger-codegen-cli-2.4.13.jar -O swagger-codegen-cli.jar
  4. Kopieren swagger-codegen-cli.jar in dein lokales Verzeichnis C:\\SwaggerToCL.

  5. Gehe in GitHub zu https://github.com/amzn/selling-partner-api-models/tree/main/models und verwende den folgenden Befehl, um das zu klonen selling-partner-api-models Repository in dein lokales Verzeichnis C:\\SwaggerToCL.

    git clone https://github.com/amzn/selling-partner-api-models
  6. Navigiere zum selling-partner-api-models\\models Ordner in Ihrer lokalen Kopie des Repositorys und kopieren Sie eine JSON-Datei aus den Unterordnern des Modells in C:\\SwaggerToCL. Dieses Tutorial verwendet die Sellers.json datei.

  7. Gehe in GitHub zu https://github.com/amzn/selling-partner-api-models/tree/main/clients/sellingpartner-api-aa-csharp und laden Sie das herunter sellingpartner-api-aa-csharp Ordner auf Ihrem lokalen Computer.

Dieser Ordner enthält Hilfsklassen zum Generieren eines Zugriffstokens für Amazon-Verkaufspartner-APIs. Er ist für die Verwendung mit den Vertriebspartner-API-Clientbibliotheken vorgesehen, die von generiert wurden Swagger Codegen mit der RestSharp-Bibliothek. Es kann auch in benutzerdefinierte Projekte integriert werden.

Nachdem Sie das erforderliche Setup abgeschlossen haben, besteht der nächste Schritt darin, das Java SDK mit den Authentifizierungs- und Autorisierungsklassen zu generieren, die im Ordner sellingpartner-api-aa-csharp enthalten sind.

Schritt 2. Generieren Sie ein C#-SDK mit LWA-Token-Austausch und Authentifizierung

  1. Öffnen Sie Visual Studio.

  2. In der sellingpartner-api-aa-csharp Ordner, wählen Sie den SellingPartnerAPIAuthAndAuthCSharp.sln archivieren und erstellen Sie es mit dem bauen Option in Visual Studio. Dies generiert die Amazon.SellingPartnerAPIAA.dll Montage im Ordner sellingpartner-api-aa-csharp\\src\\Amazon.SellingPartnerAPIAA\\bin\\Debug\\netstandard2.0.

  3. Öffnen Sie ein Terminal und führen Sie die folgenden Befehle aus, um die C#-Clientbibliothek zu generieren. Der Standardpaketname für die generierte Clientbibliothek lautet Swagger.IO. Diese Befehle generieren die Client-Bibliotheken mit ihren jeweiligen API-Namen als Paketnamen statt Swagger.IO.

    • In C:\\SwaggerToCL, erstelle eine JSON-Datei mit dem Namen csharpConfig.json, öffne einen Editor und füge den folgenden Code hinzu. Für packageName, verwenden Sie den gleichen Namen der API, für die Sie die Client-Bibliothek generieren möchten:
    {"packageName":"SellingPartnerAPI.SellerAPI","targetFramework":"v4.7.2"}

    Führen Sie diesen Befehl aus, um C#-Code mit einem benutzerdefinierten Paketnamen zu generieren:

    java -jar C:\SwaggerToCL\swagger-codegen-cli.jar generate -i C:\SwaggerToCL\[name of model].json -l csharp -t [path to selling-partner-api-models\clients\sellingpartner-api-aa-csharp folder]\src\Amazon.SellingPartnerAPIAA\resources\swagger-codegen\templates\ -o C:\SwaggerToCL\[name of client library] -c C:\SwaggerToCL\csharpConfig.json

    Dieser Befehl verwendet Sellers.json um C#-Code zu generieren:

    java -jar C:\SwaggerToCL\swagger-codegen-cli.jar generate -i C:\SwaggerToCL\Sellers.json -l csharp -t C:\SwaggerToCL\sellingpartner-api-aa-csharp\src\Amazon.SellingPartnerAPIAA\resources\swagger-codegen\templates\ -o C:\SwaggerToCL\Sellers_CsharpCL -c C:\SwaggerToCL\csharpConfig.json

    Das SDK wurde erstellt in C:\\SwaggerToCL\\Sellers_CsharpCL. Der nächste Schritt besteht darin, die eigentliche Anwendung zu schreiben und mithilfe des generierten C#-SDK eine Verbindung zur SP-API herzustellen.

Schritt 3. Stellen Sie mithilfe des generierten C#-SDK eine Verbindung zur Vertriebspartner-API her

  1. Navigieren Sie in Visual Studio IDE zu Ihrer generierten Bibliothek Verkäufer_CSharpCL Ordner und öffne den .sln datei. Die .sln Die Paketdatei wird den Namen haben, wie er unter angegeben ist Schritt 2. Generieren Sie ein C#-SDK mit LWA-Token-Austausch und Authentifizierung. In diesem Beispiel lautet der Name der Paketdatei SellingPartnerAPI.SellerAPI.sln.

  2. Rechtsklick auf SellingPartnerAPI.SellerAPI Datei und wähle Hinzufügen > Referenzen.

  3. In der Referenzen Fenster, wähle Stöbern, navigiere zu sellingpartner-api-aa csharp/src/Amazon.SellingPartnerAPIAA/bin/Debug/netstandard2.0 und wähle Amazon.SellingPartnerAPIAA.dll.

  4. Wiederholen Sie die Schritte 1—3 für SellingPartnerAPI.SellerAPI.Test datei.

  5. Navigieren Sie zum Ordner der generierten Bibliothek Sellers_CsharpCL, klicken Sie mit der rechten Maustaste auf die Datei SellingPartnerAPI.SellerAPI, wählen Sie Optionen > Allgemein und ändern Sie das Zielframework in .net Framework v4.7 und höher.

  6. Wiederholen Sie Schritt 5 für SellingPartnerAPI.SellerAPI.Test datei.

  7. Rechtsklick auf SellingPartnerAPI.SellerAPI Datei und wähle NuGet-Pakete verwalten. Stellen Sie sicher, dass Sie über die folgenden Paketversionen verfügen (falls nicht, installieren Sie die entsprechenden NuGet-Pakete):

    • JsonSubTypes 1.2.0 oder alle
    • Newtonsoft.json 12.0.3 oder alle
    • RestSharp 106.12.0
    • RateLimiter 2.2.0 oder neuer (das wird auch installiert ComposableAsync.Core)
  8. Rechtsklick auf SellingPartnerAPI.SellerAPI.Test Datei und wähle NuGet-Pakete verwalten. Installieren Sie den Neinheit 2.6.4 Paket.

    📘

    Manuelle Installation von NuGet-Paketen

    In einigen Szenarien (z. B. bei der Verwendung von IOS) werden die erforderlichen Versionen in den NuGet-Paketen zwar angezeigt, aber es kann ein Fehler auftreten. In diesem Fall müssen Sie die Pakete manuell aus dem Paketordner im Dateisystem hinzufügen:

    1. Navigieren Sie in Sellers_CsharpCL zum generierten Bibliotheksordner .sln und öffnen Sie die Datei {{2}}.
    2. Rechtsklick auf SellingPartnerAPI.SellerAPI Datei und wähle Hinzufügen > Referenzen.
    3. In der Referenzen Fenster, wähle Stöbern, navigiere zu sellingpartner-api-aa csharp/src/Amazon.SellingPartnerAPIAA/bin/Debug/netstandard2.0, wählen Sie den generierten Client-Bibliotheksordner (z. B. Sellers_CsharpCL), dann wähle Pakete und fügen Sie das Paket hinzu, für das der Fehler auftritt.
  9. In der SellingPartnerAPI.SellerAPI.Test > Api Ordner, öffne den [Modelname]Tests.cs Datei und füge den folgenden Code hinzu:

    using System; using System.IO; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Reflection; using RestSharp; using SellingPartnerAPI.SellerAPI.Client; using SellingPartnerAPI.SellerAPI.Api; using SellingPartnerAPI.SellerAPI.Model; using Amazon.SellingPartnerAPIAA; namespace SellingPartnerAPI.SellerAPI.Test { class SellersApiTests { public static void Main(string[] args) { try { LWAAuthorizationCredentials lwaAuthorizationCredentials = new LWAAuthorizationCredentials { ClientId = "amzn1.application-oa2-client.******************", ClientSecret = "***********************************", RefreshToken = "Atzr|***********************************", Endpoint = new Uri("https://api.amazon.com/auth/o2/token") }; SellersApi sellersApi = new SellersApi.Builder() .SetLWAAuthorizationCredentials(lwaAuthorizationCredentials) .Build(); GetMarketplaceParticipationsResponse result = sellersApi.GetMarketplaceParticipations(); Console.WriteLine(result.ToJson()); } catch (LWAException e) { Console.WriteLine("LWA Exception when calling SellersApi#getMarketplaceParticipations"); Console.WriteLine(e.getErrorCode()); Console.WriteLine(e.getErrorMessage()); Console.WriteLine(e.Message); } catch (ApiException e) { Console.WriteLine("Exception when calling SellersApi#getMarketplaceParticipations"); Console.WriteLine(e.Message); } } } }

    LWAAuthorizationCredentials Instanzparameter:

NameBeschreibungErforderlich
ClientIdIhre LWA-Client-Bezeichnung. Weitere Informationen finden Sie unter Ansicht ihrer Anwendungs- und Anmeldeinformationen.Ja
ClientSecretYour LWA client secret. For more information, refer to Viewing your application information and credentialsJa
RefreshTokenThe LWA refresh token. Get this value when the selling partner authorizes your application. For more information, refer to Authorizing Selling Partner API Applications.No. Include RefreshToken if the operation that you call in the following step requires selling partner authorization. All operations that are not grantless operations require selling partner authorization. If you include RefreshToken, do not include Scopes.
ScopesThe scope of the LWA authorization grant. You can specify one or more Scopes values:
- ScopeNotificationsAPI. For the Notifications API.
- ScopeMigrationAPI. For the Authorization API.
Nein. Fügen Sie Scopes ein, wenn der Vorgang, den Sie im folgenden Schritt aufrufen, ein Berechtigungloser Vorgang ist. Wenn Sie Scopes einschließen, schließen Sie die RefreshToken nicht ein.
EndpointDie URI des LWA-Authentifizierungsservers.Ja
Example of an operation call that requires selling partner authorization:

```csharp
using Amazon.SellingPartnerAPIAA;
LWAAuthorizationCredentials lwaAuthorizationCredentials = new LWAAuthorizationCredentials
{
  ClientId = "myClientId",
  ClientSecret = "myClientSecret",
  RefreshToken = "Aztr|...",
  Endpoint = new Uri(""https://api.amazon.com/auth/o2/token"")
};
```

Example of a grantless operation call:

```csharp
using Amazon.SellingPartnerAPIAA;
LWAAuthorizationCredentials lwaAuthorizationCredentials = new LWAAuthorizationCredentials
{
  ClientId = "myClientId",
  ClientSecret = "myClientSecret",
  Scopes = new List<string>() { ScopeConstants.ScopeNotificationsAPI, ScopeConstants.ScopeMigrationAPI }
  Endpoint = new Uri(""https://api.amazon.com/auth/o2/token"")
};
```
  1. Um die Ausgabe des Codes anzuzeigen, müssen Sie ihn in eine Konsolenanwendung konvertieren. Klicken Sie dazu mit der rechten Maustaste auf SellingPartnerAPI.SellerAPI.Test Datei und wähle Optionen.

  2. Auf dem Optionen für das Projekt Fenster, im linken Navigationsbereich, erweitern Bauen, dann wähle Allgemeines. In der Generierung von Code Abschnitt, wähle Ziel kompilieren und wähle Ausführbar mit GUI. Wählen OK.

  3. Erstellen Sie das Projekt und führen Sie es aus.

Problembehandlung bei einem C#-SDK

IRestRequest Fehler:“RestSharp Version=105.0.0.0. Culture=neutral. PublicKevToken=598062e77f915f75 ist in einer Assembly definiert, auf die nicht verwiesen wird. Sie müssen einen Verweis auf die Assembly hinzufügen {{2}}“

Auswählen, um die Antwort zu erweitern. Aktualisieren Sie das Paket {{0}} auf Version 106.12.0.0. Überprüfen Sie die Referenz, um sicherzustellen, dass die Version 106.12 erfolgreich aktualisiert wurde. Wenn weiterhin 105.0.0.0 angezeigt wird, entfernen Sie die alte Version aus der Referenz und fügen Sie das Paket 106.12.0.0 manuell aus dem Ordner Pakete mit der generierten Clientbibliothek hinzu.

"Der Typ- oder Namespace-Name {{0}} konnte nicht gefunden werden (using-Direktive oder Assembler-Referenz nicht vorhanden?)"

Wählen Sie aus, um die Antwort zu erweitern.

In some scenarios, even though you have the required version in the NuGet packages for Newtonsoft, you need to manually add the package from the package folder in the file system. To resolve this, use the following steps:

  1. In Visual Studio, right-click your generated SDK package and choose Add, then References.

  2. Wählen Sie im Referenzfenster der .Net-Assembly browse**.

  3. Navigate to the generated client library folder in localpackages and add the specific package for Newtonsoft.

"Meldung: Feldtyp SellingPartnerAPI.servicesApi.Client.ApiClient:rateLimiter (3) konnte nicht geladen werden, aufgrund von: Konnte Datei oder Assembly ComposableAsync.Core, Version=1.1.1.0, Culture=neutral, PublicKeyToken=null oder eine ihrer Abhängigkeiten nicht laden."

Wählen Sie aus, um die Antwort zu erweitern.

Wenn Sie diesen Fehler erhalten, nachdem Sie Ihren Code erstellt und ausgeführt haben, wurde das ComposableAsync.Core-Abhängigkeitspaket zwar heruntergeladen, aber nicht als Referenz hinzugefügt. Stellen Sie sicher, dass Sie die dll manuell als Referenz hinzufügen.

Probleme bei der Zuordnung von Modellen

Wählen Sie aus, um die Antwort zu erweitern.

Das Modell ItemAsin wurde mit dem Typ JsonObject generiert, aber die erforderliche Zeichenfolge ItemAttributes erfordert den Typ JsonObjectAttribute. Sie können diesen Befehl verwenden, der die Katalogartikel-API verwendet, um die erforderlichen Zuordnungen für die Modelle zu importieren:

`java -jar swagger-codegen-cli.jar generate -i catalogItems_2022-04-01.json -l csharp -t sellingpartner-api-aa-csharp\src\Amazon.SellingPartnerAPIAA\resources\swagger-codegen\templates —import-mappings ItemAttributes=Newtonsoft.Json.JsonObjectAttribute —import-mappings ItemAsin=System.string -o catalogItems2022-04-01_import`

"HttpRequestHeaders.ToJson(): Es wurde keine geeignete Methode zum Überschreiben gefunden."

Wählen Sie aus, um die Antwort zu erweitern.

Ändern Sie das Schlüsselwort override mit virtual. Deklarieren Sie Methoden als virtual, damit sie überschrieben werden können.

public virtual string ToJson() { return JsonConvert.SerializeObject(this, Formatting.Indented); }

"Der Name BaseValidate existiert im aktuellen Kontext nicht"

Wählen Sie aus, um die Antwort zu erweitern.

Heben Sie die Kommentierung der genannten Methoden in der Klasse auf:

// IEnumerable<System.ComponentModel.DataAnnotations.ValidationResult> IValidatableObject.Validate(ValidationContext validationContext) // { // foreach (var x in BaseValidate(validationContext)) // yield return x; // yield break; // }

Hat Ihnen diese Seite weitergeholfen?