Conéctese a la API de selling partner mediante un SDK de C# generado

Cómo conectarse a la SP-API mediante un SDK de C# generado.

En este tutorial se describe cómo usar un Software Developer Kit (SDK) de C# generado para realizar llamadas a la API. El SDK expone clases para configurar sus credenciales de LWA y AWS y las utiliza para generar tokens de LWA y firmar solicitudes por usted. Para obtener más información, consulte Generar un SDK de C# con generación y autenticación de tokens LWA .

Antes de que su aplicación pueda conectarse a la Selling Partner API, debe registrarla y un selling partner debe autorizarla. Consulte Registro de su aplicación y Autorización de aplicaciones API de selling partner.

También debe instalar las siguientes dependencias a través de NuGet en Visual Studio :

  • JsonSubTypes 1.2.0 o más reciente
  • Newtonsoft.json 12.0.3 o posterior
  • RestSharp 106.12.0
  • RateLimiter 2.2.0 o posterior (esto también instalará ComposableAsync.Core )

Paso 1. Configura tus credenciales de AWS

Crear una instancia de AWSAuthenticationCredentials using these parameters:

NombreDescripciónRequerido
AccessKeyIdSu access key Id de AWS del Paso 2. Cree un usuario de IAM .
SecretKeySu secret access key de AWS del Paso 2. Cree un usuario de IAM .
RegionLa región de AWS a la que está dirigiendo su llamada. Para obtener más información, consulte SP-API Endpoints.

Ejemplo:

AWSAuthenticationCredentials awsAuthenticationCredentials = new AWSAuthenticationCredentials
  {
    AccessKeyId = "myAccessKeyId",
    SecretKey = "mySecretId",
    Region = "us-east-1"
  };

Paso 2: configure sus credenciales de LWA

Crear una instancia de LWAAuthorizationCredentials using these parameters:

NombreDescripciónRequerido
ClientIdSu identificador de cliente LWA. Para obtener más información, consulte Visualización de la información y las credenciales de su aplicación .
ClientSecretSu secreto de cliente de LWA. Para obtener más información, consulte Visualización de la información y las credenciales de su aplicación .
RefreshTokenEl token de actualización de LWA. Obtenga este valor cuando el selling partner autorice su aplicación. Para obtener más información, consulte Autorización de aplicaciones API de selling partners.No. Incluir RefreshToken si la operación a la que llama en el siguiente paso requiere la autorización del selling partner. Todas las operaciones que no sean operaciones sin garantía requieren la autorización del selling partner. si incluyes RefreshToken , no incluir alcances
ScopesEl alcance de la concesión de la autorización LWA. Puede especificar uno o más Valores de los alcances :

- ScopeNotificationsAPI. Para la API de notificaciones .
- ScopeMigrationAPI . Para la API de autorización .
No. Incluir Scopes si la operación a la que llama en el paso siguiente es una operaciones sin garantía. si incluyes Scopes , no incluyen el RefreshToken .
EndpointEl URI del servidor de autenticación LWA.

Ejemplo de llamada de operación que requiere autorización de selling partner

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

Ejemplo de una llamada de operación sin concesión

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"")
};

Paso 3. Cree una instancia de la Sellers API y llame a una operación

Después de configurar su AWSAuthenticationCredentials y LWAAuthorizationCredentials , puede crear una instancia de Sellers Apiy llamar a una operación.

Ejemplo

 SellersApi sellersApi = new SellersApi.Builder() 
                        .SetAWSAuthenticationCredentials(awsAuthenticationCredentials) 
                        .SetLWAAuthorizationCredentials(lwaAuthorizationCredentials) 
                        .Build();

Solucionar problemas de un SDK de C#

Errores de Restsharp: “IRestRequest se define en un assembly al que no se hace referencia. Debe agregar una referencia a la assembly' RestSharp Version=105.0.0.0. Culture=neutral. PublicKevToken=598062e77f915f75”

Seleccione para expandir la respuesta.

Actualice el Restsharp package to version 106.12.0.0. Verifique la referencia para asegurarse de que la versión 106.12 se actualizó correctamente. Si continúa mostrando 105.0.0.0, elimine la versión anterior de la referencia y agregue el package 106.12.0.0 manualmente desde la packages folder con la biblioteca cliente generada.

"No se pudo encontrar el tipo o el nombre del espacio de nombres 'Newtonsoft' (¿falta una directiva de uso o una referencia de assembly?)"

Seleccione para expandir la respuesta.

En algunos escenarios, aunque vea la versión requerida en los packages de NuGet para Newtonsoft, requiere la adición manual desde la package folder en el file system. Para resolver esto, utilice los siguientes pasos:

  1. En Visual Studio, haga clic con el botón derecho en su package SDK generado y elija AddReferences
  2. En la ventana de referencias en .Net Assembly, elija browse **.
  3. Navegue a la folder de la biblioteca del cliente generada en localpackages y agregue el package específico para Newtonsoft.

“Mensaje: Could not load type of field ''SellingPartnerAPI.servicesApi.Client.ApiClient:rateLimiter' (3) due to : Could not load file or assembly 'ComposableAsync.Core, Version=1.1.1.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies.".

Seleccione para expandir la respuesta.

Si recibe este error después de build y ejecutar su código, entonces el El package de dependencia `ComposableAsync.Core` se descargó pero no se incluyó como referencia. Asegúrese de agregar el dll como referencia manualmente.

Asignación de problemas con modelos

Seleccione para expandir la respuesta.

El modelo `ItemAsin` se generó con el Tipo `JsonObject` , pero la string requerida `ItemAttributes` requiere el `JsonObjectAttribute` . Puede usar este comando, que usa la API de [elementos del catálogo]() , para importar el mapeo requerido para los modelos:

`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()': no se encontró ningún método adecuado para override."

Seleccione para expandir la respuesta.

Modificar el `override` palabra clave con `virtual` Declarar métodos como `virtual` para que puedan ser overridden.

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

“El nombre 'BaseValidate' no existe en el contexto actual”

Seleccione para expandir la respuesta.

Descomente los métodos mencionados en la clase:

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