Conectar-se à API do parceiro de vendas usando um SDK C# gerado
Conecte-se à SP-API usando um SDK C# gerado.
Este tutorial descreve como usar um kit de desenvolvimento de software (SDK) gerado em C# para fazer chamadas à API. O SDK expõe classes para configurar as credenciais do LWA e da AWS e as usa para gerar tokens do LWA e assinar solicitações por você. Para obter mais informações, consulte Gerar um SDK em C# com geração e autenticação de tokens do LWA.
Antes que seu aplicativo possa se conectar à API do parceiro de vendas, você precisa registrá-lo e um parceiro de vendas deve autorizá-lo. Consulte Como registrar seu aplicativo e Como autorizar aplicativos da API do parceiro de vendas.
Você também deve instalar as seguintes dependências via https://visualstudio.microsoft.com/downloads no Visual Studio:
JsonSubTypes 1.2.0
ou todosNewtonsoft.json 12.0.3
ou todosRestSharp 106.12.0
RateLimiter 2.2.0
ou mais recente (isso também instalaráComposableAsync.Core
)
Etapa 3. Configurar as credenciais do LWA
Crie uma instância de LWAAuthorizationCredentials
usando estes parâmetros:
Nome | Descrição | Obrigatório |
---|---|---|
ClientId | Seu identificador de cliente do LWA. Para obter mais informações, consulte Visualizar as informações e credenciais do aplicativo. | Sim |
ClientSecret | Seu segredo de cliente do LWA. Para obter mais informações, consulte Visualizar as informações e credenciais do aplicativo. | Sim |
RefreshToken | O token de atualização do LWA. Obtenha esse valor quando o parceiro de vendas autorizar seu aplicativo. Para obter mais informações, consulte Como autorizar aplicativos da API do parceiro de vendas. | Não. Inclua RefreshToken se a operação que você chamar na etapa a seguir exigir autorização do parceiro de vendas. Todas as operações que não são operações sem concessão exigem autorização do parceiro de vendas. Se você incluir RefreshToken , não inclua Scopes . |
Scopes | O escopo da concessão de autorização da LWA. Assume o valor | Não. Inclua Scopes se a operação que você chamar na etapa a seguir for uma operação sem concessão. Se você incluir Scopes , não inclua RefreshToken . |
Endpoint | O URI do servidor de autenticação do LWA. | Sim |
Exemplo de uma chamada de operação que exige autorização do parceiro de vendas:
using Amazon.SellingPartnerAPIAA;
LWAAuthorizationCredentials lwaAuthorizationCredentials = new LWAAuthorizationCredentials
{
ClientId = "myClientId",
ClientSecret = "myClientSecret",
RefreshToken = "Aztr|...",
Endpoint = new Uri(""https://api.amazon.com/auth/o2/token"")
};
Exemplo de uma chamada de operação sem concessão
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"")
};
Etapa 3. Criar uma instância da API do vendedor e chamar uma operação
Depois de configurar seu LWAAuthorizationCredentials
, você pode criar uma instância de SellersApi
e chame uma operação.
Por exemplo:
SellersApi sellersApi = new SellersApi.Builder()
.SetLWAAuthorizationCredentials(lwaAuthorizationCredentials)
.Build();
Solucionar problemas de um SDK C#
Erros de IRestRequest
: “RestSharp Version=105.0.0.0. Culture=neutral. PublicKevToken=598062e77f915f75
está definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly {{2}}”
Clique para expandir a resposta.
Atualize o pacote do {{0}} para a versão 106.12.0.0. Verifique a referência para garantir que a versão 106.12 tenha sido atualizada com êxito. Se a versão 105.0.0.0 continuar sendo exibida, remova a versão antiga da referência e adicione o pacote 106.12.0.0 manualmente da pasta de pacotes com a biblioteca de clientes gerada.“O tipo ou o nome do espaço de nomes {{0}} não foi encontrado (está faltando uma diretiva de uso ou uma referência de assembly?)”
Selecione para expandir a resposta.
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.
“Mensagem: Não foi possível carregar o tipo de campo SellingPartnerAPI.servicesApi.Client.ApiClient:rateLimiter
(3) devido a: Não foi possível carregar o arquivo ou o assembly ComposableAsync.Core, Version=1.1.1.0, Culture=neutral, PublicKeyToken=null
ou uma de suas dependências.”
Selecione para expandir a resposta.
Se você receber esse erro depois de criar e executar seu código, isso significa que o pacote de dependência ComposableAsync.Core
foi baixado, mas não foi incluído como referência. Certifique-se de adicionar manualmente a dll como referência.
Problemas de mapeamento com modelos
Selecione para expandir a resposta.
O modelo ItemAsin
foi gerado com o tipo JsonObject
, mas a string necessária ItemAttributes
requer o JsonObjectAttribute
. Você pode usar esse comando, que usa a API de itens do catálogo, para importar o mapeamento necessário para os 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()
: nenhum método adequado foi encontrado para a substituição.”
Selecione para expandir a resposta.
Substitua a palavra-chave override
por virtual
. Declare os métodos como virtual
para que possam ser substituídos.
public virtual string ToJson()
{
return JsonConvert.SerializeObject(this, Formatting.Indented);
}
“O nome BaseValidate
não existe no contexto atual”
Selecione para expandir a resposta.
Remova o comentário dos métodos mencionados na 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