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

教程:使用适用于 Node.js 的 JavaScript SDK 自动调用 SP-API

借助“使用亚马逊账户登录” (LWA) 令牌交换和身份验证,自动执行 SP-API 调用。

本教程为您提供为 Node.js 生成带有使用亚马逊账户登录 (LWA) 令牌交换和身份验证功能的 JavaScript SDK 所需的所有详细信息,以便您无缝构建应用程序。您将了解为 Node.js 构建 JavaScript SDK 所需的前提条件,并查看使用销售伙伴 API(面向卖家)和 Swagger 代码生成器的示例。

Node.js 的 SP-API JavaScript SDK 是针对与亚马逊的销售伙伴 API 进行服务器端集成而专门设计。本教程涵盖集成和进行 SP-API 调用,侧重于实际应用,以便您可以直接在服务器端流程中执行 API 调用并集成亚马逊的商城功能。

教程

以下教程将帮助您为 Node.js 设置自己的 JavaScript SDK,以实现 SP-API 调用的自动化。

先决条件

要完成本教程,您需要满足以下前提条件:

  • 处于草稿或发布状态的混合或 SP-API 应用
  • 集成开发环境 (IDE) 软件
  • Java 版本 7 或更高版本
  • swagger-codegen-cli-2.4.29
  • Node.js v18 或更高版本

❗️

请注意

您必须使用 swagger-codegen-cli-2.4.29。如果您使用除 2.4.29 之外的其他 swagger-codegen-cli 版本,SDK 生成将失败。使用错误的版本可能会在集成过程中引发更大的问题。

在您的应用程序可以连接到销售伙伴 API 之前,您必须对其进行注册,并且它必须获得销售伙伴的授权。如果您没有混合或 SP-API 应用,请按照注册为开发者注册您的应用程序授权销售伙伴 API 应用程序步骤进行操作。然后,返回到本教程。

接下来,为教程设置工作区。

第 1 步:设置工作区

  1. 在您的本地驱动器上,为此项目创建一个目录,命名为 SPAPI_JavaScript_SDK,然后导航到新目录。

    mkdir SPAPI_JavaScript_SDK cd SPAPI_JavaScript_SDK
  2. 下载以下工具。

  3. 运行以下命令下载 Swagger 代码生成器:

    wget https://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/2.4.29/swagger-codegen-cli-2.4.29.jar
  4. 使用以下命令获取文件并更改权限以使其可执行。

    chmod 744 swagger-codegen-cli-2.4.29.jar
  5. swagger-codegen-cli.jar 复制到您的本地目录 C:\\SPAPI_JavaScript_SDK 中。

  6. 在 GitHub 上,转到 https://github.com/amzn/selling-partner-api-models/tree/main/models 并使用以下命令将 selling-partner-api-models 存储库克隆到本地目录 C:\\SPAPI_JavaScript_SDK

    git clone https://github.com/amzn/selling-partner-api-models

    现在您已完成所需的设置,下一步是使用 sellingpartner-api-javascript 文件夹中提供的身份验证和授权类,为 Node.js 生成 JavaScript SDK。

第 2 步:生成带有 LWA 令牌交换和身份验证功能的 Node.js JavaScript SDK

导航到 SellingPartnerAPISdkJavaScriptNode/src 目录。在 src 目录中找到 generate-js-sdk.sh shell 脚本文件。在命令行中运行以下脚本:

cd SellingPartnerAPISdkJavaScriptNode/src ./generate-js-sdk.sh -j ../../swagger-codegen-cli-2.4.29.jar

现在,您可以在包根目录中查看分别包含 API 模型和 JavaScript SDK 的 modelssdk 目录。

此文件夹提供了帮助类,用于为亚马逊销售伙伴 API 生成访问令牌。它旨在与通过 Swagger Codegen 和 RestSharp 库生成的销售伙伴 API 客户端库一起使用。此外,它也可以集成到自定义项目中。

第 3 步:创建一个本地 npm 包

打包您的 SDK 以便在多个本地项目中使用,而无需将 SDK 发布到公共 npm 注册表。

  1. 打开 package.json 文件,并添加以下内容以确保 package.json 正确设置以包含必要的目录:

    "files": [ "src/helper/", "sdk/" ]

    此步骤确保只有指定的目录及其内容(例如,src/helper/sdk/)被包含在包中,而其他内容则被忽略。

  2. 在您的终端或命令提示符中导航到 SellingPartnerAPISdkJavaScriptNode 目录。

  3. 运行以下命令创建包:

    npm pack

    此命令会在您的项目目录中创建一个名为 amzn-testsellingpartnerjavascriptapilwalib-1.0.0.tgz 或类似名称的 tarball(TGZ 文件),具体名称基于您的包的名称和版本。它包含您项目中的所有必要文件,从而有效地创建了一个可以像任何已发布的 npm 包一样安装的本地包。

第 4 步:使用本地 npm 包创建一个新项目

现在,您可以创建一个使用本地 npm 包的新项目。通过这种方式,您可以在与最终开发者将遇到的环境类似的环境中测试 SDK。

  1. 输入以下命令为新项目创建一个新目录。此示例假设您的当前目录是 SellingPartnerAPISdkJavaScriptNode/src

    cd ../../ mkdir MyNewSPAPIProject cd MyNewSPAPIProject
  2. 设置一个新的 Node.js 项目以确保环境干净。

    npm init -y
  3. 按照提示初始化您的新项目。如果默认选项符合您的偏好,请接受默认选项。

  4. 在此新项目中,安装您在第 3 步:创建本地 npm 包中创建的本地 npm 包。对于以下命令,请将占位符 ../SellingPartnerAPISdkJavaScriptNode/amzn-testsellingpartnerjavascriptapilwalib-1.0.0.tgz 替换为您的 TGZ 文件的实际路径。这一步至关重要,因为它模拟了其他开发者如何将您的 SDK 集成到他们的项目中。

    npm install ../SellingPartnerAPISdkJavaScriptNode/amzn-testsellingpartnerjavascriptapilwalib-1.0.0.tgz

    📘

    注意

    根据您的当前工作目录,.tgz 文件的路径可以是绝对路径或相对路径。例如,如果您的 .tgz 文件在 SellingPartnerAPISdkJavaScriptNode 目录中,则命令为 npm install ../SellingPartnerAPISdkJavaScriptNode/amzn-testsellingpartnerjavascriptapilwalib-1.0.0.tgz

    完成这些步骤后,您的包将作为依赖项列在新项目的 package.json 中,您可以像平常一样导入功能。

第 5 步:使用生成的 Node.js 的 JavaScript SDK 连接到销售伙伴 API

设置好身份验证后,您现在就可以与 SP-API 端点进行交互。

  1. 将您的 LWA 凭证存储在项目根目录内的 app.config.mjs 文件中。

    touch app.config.mjs
  2. app.config.mjs 中按如下方式定义您的凭证:

    export const AppConfig = { lwaClientId: "< LWA client ID >", lwaClientSecret: "< LWA client secret >", lwaRefreshToken: "< LWA refresh token >", }

    🚧

    小心

    切勿将此文件提交到版本控制系统中,因为它包含敏感信息。请确保这些 LWA 凭证以加密格式安全存储。

  3. 在项目根目录中创建一个名为 index.js 的新文件,并插入以下脚本,该脚本会启动对特定 SP-API 端点的调用,并将响应记录到控制台。

    touch index.js
  4. 将以下内容复制并粘贴到 index.js 中:

    import { AppConfig } from './app.config.mjs'; import { LwaAuthClient } from '@amzn/testsellingpartnerjavascriptapilwalib/src/helper/LwaAuthClient.mjs'; import { SellersApi, ApiClient as SellersApiClient, } from '@amzn/testsellingpartnerjavascriptapilwalib/sdk/src/sellers/index.js'; (async () => { const lwaClient = new LwaAuthClient( AppConfig.lwaClientId, AppConfig.lwaClientSecret, AppConfig.lwaRefreshToken ); const sellerApiClient = new SellersApiClient( 'https://sellingpartnerapi-fe.amazon.com' ); const sellerApi = new SellersApi(sellerApiClient); sellerApiClient.applyXAmzAccessTokenToRequest( await lwaClient.getAccessToken() ); const participations = await sellerApi.getMarketplaceParticipations(); console.log( JSON.stringify(participations, null, ' ') + '\n**********************************' ); })();
  5. 运行脚本:在终端或命令提示符中运行以下命令,以启动对卖家 API 端点的 GET 请求:

    node index.js

    此命令将运行您的脚本,启动 API 调用,并在控制台中显示结果。

    预期输出:

    { "payload": [ { "marketplace": { "id": "xxxxx", "countryCode": "JP", "name": "Amazon.co.jp", "defaultCurrencyCode": "JPY", "defaultLanguageCode": "ja_JP", "domainName": "www.amazon.jp“ }, "participation": { "isParticipating": true, "hasSuspendedListings": false } } ] }

此页面对您有帮助吗?