主页文档代码示例API 参考公告模型发行说明常见问题GitHub视频
开发者中心API 状态支持
文档
开发者中心API 状态支持

使用生成的 C# SDK 连接到销售伙伴 API

使用生成的 C# 开发工具包连接到 SP-API。

本教程介绍如何使用生成的 C# 软件开发工具包 (SDK) 进行 API 调用。该 SDK 提供了用于配置 LWA 和 AWS 凭证的类,并使用这些类来生成 LWA 令牌以及为您签署请求。有关更多信息,请参阅通过 LWA 令牌生成和身份验证生成 C# SDK

您必须首先注册您的应用程序,并且由销售伙伴进行授权,之后才能将该应用程序连接到销售伙伴 API。请参阅注册您的应用程序授权销售伙伴 API 应用程序

您还必须在 Visual Studio 中通过 https://visualstudio.microsoft.com/downloads 安装以下依赖项:

  • JsonSubTypes 1.2.0 或者全部
  • Newtonsoft.json 12.0.3 或者全部
  • RestSharp 106.12.0
  • RateLimiter 2.2.0 或更新版本(这也将安装 ComposableAsync.Core)

步骤 3. 配置您的 AWS 凭证

使用以下参数,创建 LWAAuthorizationCredentials 的实例:

名称描述必填项
ClientId您的 LWA 客户端标识符。有关更多信息,请参阅查看您的应用程序信息和凭证有帮助
ClientSecret您的 LWA 客户端密钥。有关更多信息,请参阅查看您的应用程序信息和凭证有帮助
RefreshTokenLWA 刷新令牌。可在销售伙伴授权您的应用程序时获得此值。有关详细信息,请参阅授权销售伙伴 API 应用程序否。如果您在以下步骤中调用的操作需要卖家授权,请包括 RefreshToken。所有非免授权操作的操作都需要销售伙伴授权。如果您包括 RefreshToken,请勿包括 Scopes
Scopes

LWA 授权补助的范围。取值 ScopeNotificationsAPI 对于 通知 API

否。如果您在以下步骤中调用的操作是免授权操作,则包括 Scopes。如果您包括 Scopes,请勿包括 RefreshToken
EndpointLWA 身份验证服务器 URI。有帮助

需要销售合作伙伴授权的操作调用示例:

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

免授予操作调用示例

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

步骤 3. 创建卖家 API 实例并调用操作

在你配置好你的之后 LWAAuthorizationCredentials,你可以创建一个实例 SellersApi 并调用一个操作。

示例:

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

C# SDK 故障排除

IRestRequest 错误:“RestSharp Version=105.0.0.0. Culture=neutral. PublicKevToken=598062e77f915f75 是在未被引用的程序集中定义的。必须添加对程序集 {{2}} 的引用”

点击此处可展开答案。将 {{0}} 包更新为 106.12.0.0 版。检查参考以确保 106.12 版已成功更新。如果仍显示 105.0.0.0,请从参考中删除旧版本,然后使用生成的客户端库从包文件夹中手动添加 106.12.0.0 包。

“无法找到类型或命名空间名称 {{0}}(是否缺少使用指令或程序集引用?)”

点击此处可展开答案。

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.

“消息:无法加载字段 SellingPartnerAPI.servicesApi.Client.ApiClient:rateLimiter (3) 的类型,原因如下:无法加载文件或程序集 ComposableAsync.Core, Version=1.1.1.0, Culture=neutral, PublicKeyToken=null 或者其依赖项之一。”

点击此处可展开答案。

如果在生成并运行代码后收到此错误,则表示下载了 ComposableAsync.Core 依赖包,但未作为引用包含在其中。确保手动添加 dll 作为引用。

模型的映射问题

点击此处可展开答案。

ItemAsin 模型是使用 JsonObject 类型生成的,但所需的字符串 ItemAttributes 需要 JsonObjectAttribute。您可以使用此命令(该命令使用目录项 API)导入模型所需的映射:

`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():找不到合适的方法进行重写。”

点击此处可展开答案。

virtual 修改 override 关键字。将方法声明为 virtual 以便可以重写。

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

“当前上下文中不存在名称 BaseValidate

点击此处可展开答案。

取消对类中提到的方法的注释:

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

此页面对您有帮助吗?