使用生成的 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 客户端密钥。有关更多信息,请参阅查看您的应用程序信息和凭证。 | 有帮助 |
RefreshToken | LWA 刷新令牌。可在销售伙伴授权您的应用程序时获得此值。有关详细信息,请参阅授权销售伙伴 API 应用程序。 | 否。如果您在以下步骤中调用的操作需要卖家授权,请包括 RefreshToken 。所有非免授权操作的操作都需要销售伙伴授权。如果您包括 RefreshToken ,请勿包括 Scopes 。 |
Scopes | LWA 授权补助的范围。取值 | 否。如果您在以下步骤中调用的操作是免授权操作,则包括 Scopes 。如果您包括 Scopes ,请勿包括 RefreshToken 。 |
Endpoint | LWA 身份验证服务器 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:
-
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.
“消息:无法加载字段 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;
// }
Updated 23 days ago