Hub per sviluppatoriStato dell'APISupporto

Tutorial: Automatizza le chiamate SP-API utilizzando un SDK C#

Automatizza le tue chiamate SP-API con lo scambio e l'autenticazione di token Login with Amazon (LWA).

Questo tutorial fornisce tutte le informazioni necessarie per generare un SDK C# con scambio di token Login with Amazon (LWA) e un'autenticazione per creare la tua applicazione.

Puoi utilizzare questo SDK per integrare le funzionalità di Amazon Marketplace nelle tue applicazioni, tra cui l'accesso alle informazioni sui prodotti, la gestione degli ordini, la gestione delle spedizioni e altro ancora.

Tutorial

Il seguente tutorial ti aiuterà a configurare il tuo C# SDK per automatizzare le chiamate SP-API.

Prerequisiti

Per completare questo tutorial, sono necessari i seguenti prerequisiti:

  • Un'app ibrida o SP-API in stato di bozza o pubblicata
  • Software per l'ambiente di sviluppo integrato (IDE) (questa procedura dettagliata utilizza Visual Studio IDE su sistema operativo Windows)

Before your application can connect to the Selling Partner API, you must register it, and it must be authorized by a selling partner. If you do not have a hybrid or SP-API app, follow the steps to register as a developer, register your application, and Authorizing Selling Partner API applications. Then, return to this tutorial.

Quindi, configura il tuo spazio di lavoro per il tutorial.

Fase 1. Configura il tuo spazio di lavoro

  1. Sul tuo disco locale, crea una directory per questo progetto e assegnagli un nome SwaggerToCL.

  2. Scarica i seguenti strumenti.

  3. Esegui il seguente comando per scaricare Swagger Code Generator:

    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. Copia swagger-codegen-cli.jar nella tua rubrica locale C:\\SwaggerToCL.

  5. In GitHub, go to https://github.com/amzn/selling-partner-api-models/tree/main/models and use the following command to clone the selling-partner-api-models repository to your local directory C:\\SwaggerToCL.

    git clone https://github.com/amzn/selling-partner-api-models
  6. Navigate to the selling-partner-api-models\\models folder in your local copy of the repository and copy a JSON file from the models subfolders into C:\\SwaggerToCL. This tutorial uses the Sellers.json file.

  7. In GitHub, go to https://github.com/amzn/selling-partner-api-models/tree/main/clients/sellingpartner-api-aa-csharp and download the sellingpartner-api-aa-csharp folder to your local computer.

This folder provides helper classes to generate an access token for Amazon Selling Partner APIs. It is intended for use with the Selling Partner API Client Libraries generated by Swagger Codegen using the RestSharp library. It can also be integrated into custom projects.

Now that you have completed the required setup, the next step is to generate the C# SDK with the authentication and authorization classes provided in the sellingpartner-api-aa-csharp folder.

Fase 2 Genera un SDK C# con scambio e autenticazione di token LWA

  1. Apri Visual Studio.

  2. Nel sellingpartner-api-aa-csharp cartella, seleziona SellingPartnerAPIAuthAndAuthCSharp.sln file e crealo usando costruire opzione in Visual Studio. Questo genera il Amazon.SellingPartnerAPIAA.dll assemblaggio nella cartella sellingpartner-api-aa-csharp\\src\\Amazon.SellingPartnerAPIAA\\bin\\Debug\\netstandard2.0.

  3. Apri un terminale ed esegui i seguenti comandi per generare la libreria client C#. Il nome del pacchetto predefinito per la libreria client generata è Swagger.IO. Questi comandi generano le librerie client con i rispettivi nomi API come nome del pacchetto anziché Swagger.IO.

    • Nel C:\\SwaggerToCL, crea un file JSON chiamato csharpConfig.json, apri un editor e aggiungi il codice seguente. Per packageName, usa lo stesso nome dell'API per cui desideri generare la libreria client per:
    {"packageName":"SellingPartnerAPI.SellerAPI","targetFramework":"v4.7.2"}

    Esegui questo comando per generare codice C# con un nome di pacchetto personalizzato:

    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

    Questo comando utilizza Sellers.json per generare codice C#:

    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

    L'SDK è stato creato in C:\\SwaggerToCL\\Sellers_CsharpCL. Il passaggio successivo consiste nello scrivere l'applicazione effettiva e connettersi all'SP-API utilizzando l'SDK C# generato.

Fase 3. Connettiti all'API Selling Partner utilizzando l'SDK C# generato

  1. In Visual Studio IDE, navigate to your generated library Sellers_CsharpCL folder and open the .sln file. The .sln package file will have the name as provided in Step 2. Generate a C# SDK with LWA token exchange and authentication. In this example, the package file name is SellingPartnerAPI.SellerAPI.sln.

  2. Fate clic con il pulsante destro SellingPartnerAPI.SellerAPI file e seleziona Inserisci > Riferimenti.

  3. Nel Riferimenti finestra, scegli Sfoglia, vai a sellingpartner-api-aa csharp/src/Amazon.SellingPartnerAPIAA/bin/Debug/netstandard2.0 e scegli Amazon.SellingPartnerAPIAA.dll.

  4. Ripetere i passaggi 1-3 per SellingPartnerAPI.SellerAPI.Test fascicolo.

  5. Vai alla cartella della libreria generata Sellers_CsharpCL, clicca con il pulsante destro del mouse il file SellingPartnerAPI.SellerAPI, scegli Opzioni > Generalee modifica il framework di destinazione in .net Framework v4.7 e versioni successive.

  6. Ripetere il passaggio 5 per SellingPartnerAPI.SellerAPI.Test fascicolo.

  7. Fate clic con il pulsante destro SellingPartnerAPI.SellerAPI archivia e scegli Gestisci i pacchetti NuGet. Assicurati di avere le seguenti versioni del pacchetto (in caso contrario, installa i rispettivi pacchetti NuGet):

    • JsonSubTypes 1.2.0 o tutti
    • Newtonsoft.json 12.0.3 o tutti
    • RestSharp 106.12.0
    • RateLimiter 2.2.0 o più recente (verrà installato anche questo ComposableAsync.Core)
  8. Fate clic con il pulsante destro SellingPartnerAPI.SellerAPI.Test archivia e scegli Gestisci i pacchetti NuGet. Installa il Unità 2.6.4 pacchetto.

    📘

    Installazione manuale dei pacchetti NuGet

    In alcuni scenari (ad esempio, utilizzando IOS), vengono visualizzate le versioni richieste nei pacchetti NuGet, ma è possibile che si verifichi un errore. In questo scenario, è necessario aggiungere manualmente i pacchetti dalla cartella dei pacchetti nel file system:

    1. In Sellers_CsharpCL, vai alla cartella .sln generata nella libreria e apri il file {{2}}.
    2. Fate clic con il pulsante destro SellingPartnerAPI.SellerAPI file e seleziona Inserisci > Riferimenti.
    3. Nel Riferimenti finestra, scegli Sfoglia, vai a sellingpartner-api-aa csharp/src/Amazon.SellingPartnerAPIAA/bin/Debug/netstandard2.0, scegli la cartella della libreria client generata (ad esempio Sellers_CsharpCL), quindi scegli pacchetti e aggiungi il pacchetto per il quale stai riscontrando l'errore.
  9. Nel SellingPartnerAPI.SellerAPI.Test > Api cartella, apri [Modelname]Tests.cs archivia e aggiungi il seguente codice:

    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 parametri di istanza:

NomeDescrizioneObbligatorio
ClientIdYour LWA client identifier. For more information, refer to Viewing your application information and credentials.
ClientSecretYour LWA client secret. For more information, refer to Viewing your application information and credentials
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.
No. Include Scopes if the operation that you call in the following step is a grantless operation. If you include Scopes, do not include the RefreshToken.
EndpointL'URI del server di autenticazione LWA.
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. Per visualizzare l'output del codice, è necessario convertirlo in un'applicazione console. A tale scopo, fate clic con il pulsante destro del mouse su SellingPartnerAPI.SellerAPI.Test archivia e scegli Opzioni.

  2. Sul Opzioni del progetto finestra, nel riquadro di navigazione a sinistra, espandi Costruisci, quindi scegli Generale. Nel Generazione di codice sezione, scegli Compila Target e seleziona Eseguibile con GUI. Scegli OK.

  3. Costruisci ed esegui il progetto.

Risolvere i problemi relativi a un SDK C#

IRestRequest errori: "RestSharp Version=105.0.0.0. Culture=neutral. PublicKevToken=598062e77f915f75 è definito in un insieme a cui non si fa riferimento. È necessario aggiungere un riferimento all'insieme {{2}}"

Seleziona per espandere la risposta. Aggiorna il pacchetto {{0}} alla versione 106.12.0.0. Controlla il riferimento per assicurarti che la versione 106.12 sia stata aggiornata correttamente. Se continua a mostrare 105.0.0.0, rimuovi la vecchia versione dal riferimento e aggiungi il pacchetto 106.12.0.0 manualmente dalla cartella dei pacchetti con la libreria del cliente generata.

"Il nome del tipo o dello spazio dei nomi {{0}} non è stato trovato (ti manca una direttiva di utilizzo o un riferimento all'assembly?)"

Seleziona per espandere la risposta.

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. Nella finestra dei riferimenti in .Net Assembly, scegli browse**.

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

"Messaggio: impossibile caricare il tipo di campo SellingPartnerAPI.servicesApi.Client.ApiClient:rateLimiter (3) a causa di: Impossibile caricare il file o l'assembly ComposableAsync.Core, Version=1.1.1.0, Culture=neutral, PublicKeyToken=null o una delle sue dipendenze".

Seleziona per espandere la risposta.

Se ricevi questo errore dopo aver creato ed eseguito il codice, allora il pacchetto di dipendenze ComposableAsync.Core è stato scaricato ma non incluso come riferimento. Assicurati di aggiungere la dll come riferimento manualmente.

Problemi di mappatura con i modelli

Seleziona per espandere la risposta.

The ItemAsin model was generated with the JsonObject type, but the required string ItemAttributes requires the JsonObjectAttribute. You can use this command, which uses the Catalog Items API, to import the required mapping for the models :

`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(): non è stato trovato alcun metodo adatto per eseguire l'override."

Seleziona per espandere la risposta.

Modifica la parola chiave di override con virtual. Dichiara i metodi come virtual in modo che possano essere sovrascritti.

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

"Il nome BaseValidate non esiste nel contesto attuale"

Seleziona per espandere la risposta.

Rimuovi il commento ai metodi menzionati nella classe:

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

Questa pagina ti è stata utile?