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 todosNewtonsoft.json 12.0.3
o todosRestSharp 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:
Nombre | Descripción | Obligatorio |
---|---|---|
ClientId | Tu 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. | Sí |
ClientSecret | Tu 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. | Sí |
RefreshToken | El 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 | 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 . |
Endpoint | El URI del servidor de autenticación de LWA. | Sí |
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:
-
In Visual Studio, right-click your generated SDK package and choose
Add
, thenReferences
. -
On the references window in the .Net Assembly, choose
browse
. -
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;
// }
Updated 23 days ago