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
-
Sul tuo disco locale, crea una directory per questo progetto e assegnagli un nome
SwaggerToCL
. -
Scarica i seguenti strumenti.
- IDE software (this walkthrough uses Visual Studio IDE on Windows OS)
- GNU Wget
- Java 8 o versioni successive
-
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 -
Copia
swagger-codegen-cli.jar
nella tua rubrica localeC:\\SwaggerToCL
. -
In GitHub, go to
https://github.com/amzn/selling-partner-api-models/tree/main/models
and use the following command to clone theselling-partner-api-models
repository to your local directoryC:\\SwaggerToCL
.git clone https://github.com/amzn/selling-partner-api-models -
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 intoC:\\SwaggerToCL
. This tutorial uses theSellers.json
file. -
In GitHub, go to
https://github.com/amzn/selling-partner-api-models/tree/main/clients/sellingpartner-api-aa-csharp
and download thesellingpartner-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
-
Apri Visual Studio.
-
Nel
sellingpartner-api-aa-csharp
cartella, selezionaSellingPartnerAPIAuthAndAuthCSharp.sln
file e crealo usando costruire opzione in Visual Studio. Questo genera ilAmazon.SellingPartnerAPIAA.dll
assemblaggio nella cartellasellingpartner-api-aa-csharp\\src\\Amazon.SellingPartnerAPIAA\\bin\\Debug\\netstandard2.0
. -
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 chiamatocsharpConfig.json
, apri un editor e aggiungi il codice seguente. PerpackageName
, 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.jsonQuesto 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.jsonL'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. - Nel
Fase 3. Connettiti all'API Selling Partner utilizzando l'SDK C# generato
-
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 isSellingPartnerAPI.SellerAPI.sln
. -
Fate clic con il pulsante destro
SellingPartnerAPI.SellerAPI
file e seleziona Inserisci > Riferimenti. -
Nel Riferimenti finestra, scegli Sfoglia, vai a
sellingpartner-api-aa csharp/src/Amazon.SellingPartnerAPIAA/bin/Debug/netstandard2.0
e scegliAmazon.SellingPartnerAPIAA.dll
. -
Ripetere i passaggi 1-3 per
SellingPartnerAPI.SellerAPI.Test
fascicolo. -
Vai alla cartella della libreria generata
Sellers_CsharpCL
, clicca con il pulsante destro del mouse il fileSellingPartnerAPI.SellerAPI
, scegli Opzioni > Generalee modifica il framework di destinazione in .net Framework v4.7 e versioni successive. -
Ripetere il passaggio 5 per
SellingPartnerAPI.SellerAPI.Test
fascicolo. -
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 tuttiNewtonsoft.json 12.0.3
o tuttiRestSharp 106.12.0
RateLimiter 2.2.0
o più recente (verrà installato anche questoComposableAsync.Core
)
-
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:
- In
Sellers_CsharpCL
, vai alla cartella.sln
generata nella libreria e apri il file {{2}}. - Fate clic con il pulsante destro
SellingPartnerAPI.SellerAPI
file e seleziona Inserisci > Riferimenti. - 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 esempioSellers_CsharpCL
), quindi scegli pacchetti e aggiungi il pacchetto per il quale stai riscontrando l'errore.
- In
-
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:
Nome | Descrizione | Obbligatorio |
---|---|---|
ClientId | Your LWA client identifier. For more information, refer to Viewing your application information and credentials. | Sì |
ClientSecret | Your LWA client secret. For more information, refer to Viewing your application information and credentials | Sì |
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. | 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 . |
Endpoint | L'URI del server di autenticazione LWA. | Sì |
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"")
};
```
-
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. -
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.
-
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}}"
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:
-
In Visual Studio, right-click your generated SDK package and choose
Add
, thenReferences
. -
Nella finestra dei riferimenti in .Net Assembly, scegli
browse
**. -
Navigate to the generated client library folder in local → packages 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".
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."
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"
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;
// }
Updated 23 days ago