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
-
Erstellen Sie auf Ihrem lokalen Laufwerk ein Verzeichnis für dieses Projekt und benennen Sie es
SwaggerToCL
. -
Laden Sie die folgenden Tools herunter.
- IDE-Software (diese exemplarische Vorgehensweise verwendet Visuelles Studio IDE (unter Windows OS)
- GNU Wget
- Java 8 oder neuer
-
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 -
Kopieren
swagger-codegen-cli.jar
in dein lokales VerzeichnisC:\\SwaggerToCL
. -
Gehe in GitHub zu
https://github.com/amzn/selling-partner-api-models/tree/main/models
und verwende den folgenden Befehl, um das zu klonenselling-partner-api-models
Repository in dein lokales VerzeichnisC:\\SwaggerToCL
.git clone https://github.com/amzn/selling-partner-api-models -
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 inC:\\SwaggerToCL
. Dieses Tutorial verwendet dieSellers.json
datei. -
Gehe in GitHub zu
https://github.com/amzn/selling-partner-api-models/tree/main/clients/sellingpartner-api-aa-csharp
und laden Sie das heruntersellingpartner-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
-
Öffnen Sie Visual Studio.
-
In der
sellingpartner-api-aa-csharp
Ordner, wählen Sie denSellingPartnerAPIAuthAndAuthCSharp.sln
archivieren und erstellen Sie es mit dem bauen Option in Visual Studio. Dies generiert dieAmazon.SellingPartnerAPIAA.dll
Montage im Ordnersellingpartner-api-aa-csharp\\src\\Amazon.SellingPartnerAPIAA\\bin\\Debug\\netstandard2.0
. -
Ö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 stattSwagger.IO
.- In
C:\\SwaggerToCL
, erstelle eine JSON-Datei mit dem NamencsharpConfig.json
, öffne einen Editor und füge den folgenden Code hinzu. FürpackageName
, 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.jsonDieser 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.jsonDas 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. - In
Schritt 3. Stellen Sie mithilfe des generierten C#-SDK eine Verbindung zur Vertriebspartner-API her
-
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 PaketdateiSellingPartnerAPI.SellerAPI.sln
. -
Rechtsklick auf
SellingPartnerAPI.SellerAPI
Datei und wähle Hinzufügen > Referenzen. -
In der Referenzen Fenster, wähle Stöbern, navigiere zu
sellingpartner-api-aa csharp/src/Amazon.SellingPartnerAPIAA/bin/Debug/netstandard2.0
und wähleAmazon.SellingPartnerAPIAA.dll
. -
Wiederholen Sie die Schritte 1—3 für
SellingPartnerAPI.SellerAPI.Test
datei. -
Navigieren Sie zum Ordner der generierten Bibliothek
Sellers_CsharpCL
, klicken Sie mit der rechten Maustaste auf die DateiSellingPartnerAPI.SellerAPI
, wählen Sie Optionen > Allgemein und ändern Sie das Zielframework in .net Framework v4.7 und höher. -
Wiederholen Sie Schritt 5 für
SellingPartnerAPI.SellerAPI.Test
datei. -
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 alleNewtonsoft.json 12.0.3
oder alleRestSharp 106.12.0
RateLimiter 2.2.0
oder neuer (das wird auch installiertComposableAsync.Core
)
-
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:
- Navigieren Sie in
Sellers_CsharpCL
zum generierten Bibliotheksordner.sln
und öffnen Sie die Datei {{2}}. - Rechtsklick auf
SellingPartnerAPI.SellerAPI
Datei und wähle Hinzufügen > Referenzen. - 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.
- Navigieren Sie in
-
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:
Name | Beschreibung | Erforderlich |
---|---|---|
ClientId | Ihre LWA-Client-Bezeichnung. Weitere Informationen finden Sie unter Ansicht ihrer Anwendungs- und Anmeldeinformationen. | Ja |
ClientSecret | Your LWA client secret. For more information, refer to Viewing your application information and credentials | Ja |
RefreshToken | The 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. |
Scopes | The 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. |
Endpoint | Die 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"")
};
```
-
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. -
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.
-
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}}“
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:
-
In Visual Studio, right-click your generated SDK package and choose
Add
, thenReferences
. -
Wählen Sie im Referenzfenster der .Net-Assembly
browse
**. -
Navigate to the generated client library folder in local → packages 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."
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."
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"
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;
// }
Updated 23 days ago