Conectar a la API del colaborador comercial mediante un SDK de C# generado

Conéctese a la SP-API mediante un SDK de C# generado.

En este tutorial se describe cómo usar un kit de desarrollo de software (SDK) de C# generado para realizar llamadas a la API. El SDK expone las clases para configurar sus credenciales de LWA y AWS y las usa para generar tokens de LWA y firmar las solicitudes en tu nombre. Para obtener más información, consulta Generar un SDK de C# con autenticación y generación de tokens de LWA.

Para que tu aplicación pueda conectarse a la API del colaborador comercial, debes registrarla y un colaborador comercial debe autorizarla. Consulta Registro de la aplicación y Autorización de las aplicaciones de la API del colaborador comercial.

También debes instalar las siguientes dependencias mediante https://visualstudio.microsoft.com/downloads en Visual Studio:

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

Paso 3. Configurar tus credenciales de LWA

Crea una instancia de LWAAuthorizationCredentials utilizando estos parámetros:

NombreDescripciónObligatorio
ClientIdTu identificador de cliente de LWA. Para obtener más información, consulta Cómo ver la información y las credenciales de tu aplicación.
ClientSecretTu secreto de cliente de LWA. Para obtener más información, consulta Cómo ver la información y las credenciales de tu aplicación.
RefreshTokenEl token de actualización de LWA. Obtén este valor cuando el colaborador comercial autorice tu aplicación. Para obtener más información, consulta Autorización de aplicaciones de la API del colaborador comercial.No. Incluye RefreshToken si la operación a la que llamas en el paso siguiente requiere la autorización del colaborador comercial. Todas las operaciones que no son operaciones sin concesión requieren la autorización del colaborador comercial. Si incluyes RefreshToken, no incluyas Scopes.
Scopes

El alcance de la concesión de autorización de la LWA. Toma el valor ScopeNotificationsAPI para el API de notificaciones.

No. Incluye Scopes si la operación a la que llamas en el paso siguiente es una operación sin concesión. Si incluyes Scopes, no incluyas RefreshToken.
EndpointEl URI del servidor de autenticación de LWA.

Ejemplo de una llamada de operación que requiere la autorización de un socio vendedor:

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 a una 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. Crear una instancia de la API de vendedores y llamar a una operación

Después de configurar su LWAAuthorizationCredentials, puedes crear una instancia de SellersApi y llama a una operación.

Ejemplo:

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

Solución de problemas de un SDK de C#

Errores de IRestRequest: "RestSharp Version=105.0.0.0. Culture=neutral. PublicKevToken=598062e77f915f75 se define en un ensamblado al que no se hace referencia. Debes añadir una referencia al ensamblado {{2}}"

Selecciona esta opción para ampliar la respuesta. Actualiza el paquete {{0}} a la versión 106.12.0.0. Consulta la referencia para asegurarte de que la versión 106.12 se ha actualizado correctamente. Si sigue mostrando 105.0.0.0, elimina la versión anterior de la referencia y añade manualmente el paquete 106.12.0.0 desde la carpeta de paquetes que contiene la biblioteca cliente generada.

"No se puede encontrar el tipo o nombre del espacio de nombres {{0}} (¿falta una directiva de uso o una referencia de ensamblaje?)"

Selecciona esta opción para ampliar la respuesta.

In some scenarios, even though you have the required version in the NuGet packages for Newtonsoft, it requires manual addition 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. On the references window in the .Net Assembly, choose browse.

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

"Mensaje: No se ha podido cargar el tipo de campo SellingPartnerAPI.servicesApi.Client.ApiClient:rateLimiter (3) debido a: No se ha podido cargar el archivo o el ensamblado ComposableAsync.Core, Version=1.1.1.0, Culture=neutral, PublicKeyToken=null o una de sus dependencias".

Selecciona esta opción para ampliar la respuesta.

Si recibes este error después de compilar y ejecutar el código, entonces el paquete de dependencias ComposableAsync.Core se ha descargado pero no se ha incluido como referencia. Asegúrate de añadir manualmente la dll como referencia.

Problemas de asignación con modelos

Selecciona esta opción para ampliar la respuesta.

El modelo ItemAsin se generó con el tipo JsonObject, pero la cadena requerida ItemAttributes requiere JsonObjectAttribute. Puedes usar este comando, que usa la API Artículos del catálogo , para importar la asignación requerida 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 ha encontrado ningún método adecuado para sustituir".

Selecciona esta opción para ampliar la respuesta.

Modifica la palabra clave override con virtual. Declara los métodos como virtual para que puedan anularse.

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

"El nombre BaseValidate no existe en el contexto actual"

Selecciona esta opción para ampliar la respuesta.

Quita los comentarios de 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; // }

¿Te ha ayudado esta página?