对接亚马逊 SP-API(Amazon Selling Partner API) 第二章:授权

目录

1. 授权销售伙伴 API 应用程序

1.1. Marketplace Appstore workflow

1.2. Website workflow(推荐使用)

1.3. 自行授权(仅限店铺本身为开发者)

2. 全局变量(后续将会使用绿色加粗字体表示)

AMAZON_ENDPOINT

APPLICATION_ID

OAUTH_LOGIN_URI & OAUTH_REDIRECT_URI

​CLIENT_ID & CLIENT_SECRET

3. OAuth authorization URIs

4. Marketplace Appstore workflow

Step 1. The seller initiates authorization from the Marketplace Appstore

Step 2. The seller consents to authorize your application

Step 3. The seller signs into your website

Step 4. Amazon sends you the authorization information

BUG 合集

Step 5. Your application exchanges the LWA authorization code for an LWA refresh token

BUG 合集

5. Website workflow

Step 0. Set up an "Authorize" button

Step 1. The seller initiates authorization from your website

Step 2. The seller consents to authorize the application

Step 3. Amazon sends you the authorization information

Step 4. Your application exchanges the LWA authorization code for a LWA refresh token

6. Self authorization

6.1. 应用商店 --> 开发应用程序

6.2. 生成刷新令牌

总结

对接亚马逊 SP-API(Selling Partner API) 第三章:对接 SDK


1. 授权销售伙伴 API 应用程序

销售伙伴可以使用下列其中一个工作流程授权您的应用程序:

1.1. Marketplace Appstore workflow

从商城应用商店详情页面启动的 OAuth 授权工作流程。

1.2. Website workflow(推荐使用)

从您自己的网站启动的 OAuth 授权工作流程。

1.3. 自行授权(仅限店铺本身为开发者)

https://github.com/amzn/selling-partner-api-docs/blob/main/guides/en-US/developer-guide/SellingPartnerApiDeveloperGuide.md#self-authorization

获取 Refresh token

2. 全局变量(后续将会使用绿色加粗字体表示)

AMAZON_ENDPOINT

Selling regionEndpoint
North America (Canada, US, Mexico, and Brazil marketplaces)Amazon
Europe (Spain, UK, France, Netherlands, Germany, Italy, Sweden, Poland, Turkey, U.A.E, and India marketplaces)https://sellercentral-europe.amazon.com

Far East (Singapore, Australia, and Japan marketplaces)

日本:Amazon

备注:其他区域我没帐号了。不能提供准确的 endpoint。

这个应该跟亚马逊后台的域名是一致的。

 Seller Central URLs

APPLICATION_ID

OAUTH_LOGIN_URI & OAUTH_REDIRECT_URI

关于这两个我有句MMP一定要讲!这两个是可以随便填,但是要保证域名是一样的。不能是下图。(这个地方花了我两天时间!!!)并且是https开头的。


CLIENT_ID & CLIENT_SECRET

3. OAuth authorization URIs

构建授权链接,让各个店铺去登录这个链接完成授权。

链接结构如下:

{AMAZON_ENDPOINT}/apps/authorize/consent?{APPLICATION_ID}

Example:

Amazon Sign-In

注意要点

3.1. 每个亚马逊区域都需要一个单独的授权链接。
3.2. 如果是测试,链接需要加上 version=beta,且应用程序必须为草稿状态。

4. Marketplace Appstore workflow

Step 1. The seller initiates authorization from the Marketplace Appstore

这个我没找到【Authorize Now】按钮在哪里和有什么作用.. --> 答案见评论。

Step 2. The seller consents to authorize your application

Request

 3. OAuth authorization URIs 拼接的链接

授权页面如下:

Response

{OAUTH_LOGIN_URI}/?amazon_callback_uri={amazon_callback_uri}&amazon_state={amazon_state}&version=beta&selling_partner_id={selling_partner_id}

参数描述
amazon_callback_uri用于将浏览器重定向到亚马逊的 URI。
amazon_state亚马逊生成的状态值,用于防范跨站点请求伪造攻击。
selling_partner_id授权您的应用程序的卖家的卖家编号。

Step 3. The seller signs into your website

Step 4. Amazon sends you the authorization information

step 3 和 step 4 似乎是一套的,分别解释了请求和相应的格式。

Request

{amazon_callback_uri}?redirect_uri={OAUTH_REDIRECT_URI}&amazon_state={amazon_state}&state={随机码}&version=beta

Response

{OAUTH_REDIRECT_URI}?spapi_oauth_code={spapi_oauth_code}&state={你传的state是什么,接收的就是什么}&selling_partner_id={selling_partner_id}

参数描述
state您在上一步中传递的状态值。
selling_partner_id授权您的应用程序的卖家的卖家编号。
mws_auth_token不一定会有。您在为调用亚马逊商城网络服务创建查询字符串时使用的 MWSAuthToken 值。只有当卖家授权混合销售伙伴 API 应用程序时,才会传递 mws_auth_token 参数。
spapi_oauth_code您用来交换 LWA 刷新令牌的“使用亚马逊账户登录”(LWA) 授权码。

BUG 合集

1. 每次请求的时候都会一闪而过这个页面,然后才报错。我一度以为是我手速不够快,超过了15秒去点击 click reconfirm 的链接导致授权失败。

实际上,这个页面仅表示授权进行到这一步,并且卡在授权这个地方而已。

 

下面两个 Error Code 的问题,我是通过文档的 Issues 得出的解决方案,仅供参考。

issues 里面提到的 case,如果不是自己开的是无法查看的。(不用费心思找了)

2. MD5100

这个似乎是 OAUTH_LOGIN_URI 和 OAUTH_REDIRECT_URI  填的时候,LOGIN的域名不在 REDIRECT中才出现的。

3. MD9999

BUG 可能原因:application 的 IAM RAM 填成用户的。

这个似乎是你已经激活了校验,但是实际上并没有得到相应的返回值。

 

至于判断激活了校验的依据是:可以看到 App & Service --> manage your apps 里面的状态变成了 active。

官方解释

4. MD1000

官方解释

Step 5. Your application exchanges the LWA authorization code for an LWA refresh token

cURL

POST /auth/o2/token HTTP/l.l
Host: api.amazon.com
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
grant_type=authorization_code&code={spapi_oauth_code}&client_id={CLIENT_ID}&client_secret={CLIENT_SECRET}
参数描述
grant_type请求的访问授权类型。必须是 authorization_code
code您在Step 4. Amazon sends you the authorization information中收到的 LWA 授权码。即 {spapi_oauth_code}
redirect_uri您的应用程序的重定向 URI。(可选
client_id{CLIENT_ID}
client_secret{CLIENT_SECRET}

Response

{
  "access_token": "Atza|qwert",
  "token_type": "bearer",
  "expires_in": 3600,
  "refresh_token": "Atzr|asdfg"
}
参数描述
access_token授权您的应用程序代表卖家采取某些操作的令牌。
token_type返回的令牌类型。应该是 bearer。
expires_in访问令牌失效之前的秒数。(1小时有效期
refresh_token必须保存)可以交换为新访问令牌的长期令牌。(access_token 过期后,可以刷新出新的 access_token

BUG 合集

1. The request has an invalid grant parameter : code

大概率是code 过期了。好像是 5 分钟的有效期?

5. Website workflow

Step 0. Set up an "Authorize" button

按区域(三个)的不同添加按钮。重定向的链接是 3. OAuth authorization URIs

Step 1. The seller initiates authorization from your website

Step 2. The seller consents to authorize the application

Step 3. Amazon sends you the authorization information

Step 1-3 解释

Request

 3. OAuth authorization URIs 拼接的链接并且添加 state 状态值(随机生成即可)

Reponse

{OAUTH_REDIRECT_URI}?spapi_oauth_code={spapi_oauth_code}&state={你传的state是什么,接收的就是什么}&selling_partner_id={selling_partner_id}

Step 4. Your application exchanges the LWA authorization code for a LWA refresh token

同 Marketplace Appstore workflow 的 Step 5。

6. Self authorization

6.1. 应用商店 --> 开发应用程序

6.2. 生成刷新令牌

每次点击按钮都会生成一个的令牌。

总结

1. 获取 refresh_token 的方式有三种。店铺授权、网站授权和自行授权。自行授权需要店铺本身是开发者。

2. 对比店铺授权和网站授权。

网站授权方式会简单一点。相对店铺授权来说少一次操作。后续对多个帐号的授权情况,网站授权会方便很多。

两种方式授权的实际效果暂时不知道有什么区别。

3. 流程设计:使用【网站授权】

3.1. LWA Application OAUTH_REDIRECT_URI 设计成自己的接口。

3.2. 让运营将店铺的 seller id(selling_partner_id) 维护到系统中。并自动拼接 OAuth authorization URIs。

3.3. 在 OAUTH_REDIRECT_URI 接口中根据 spapi_oauth_code 直接请求 refresh_token。并根据 selling_partner_id 将 refresh_token 更新到相应的记录中。

3.4. 这样运营就只需要到亚马逊后台登录帐号即可完成授权操作。

对接亚马逊 SP-API(Amazon Selling Partner API) 第三章:对接 SDK

  • 13
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 85
    评论
com.jd.open.api:open-api-sdk:2.0是京东开放平台的Java开发工具包,用于开发者与京东开放平台进行对接和交互的SDK。 京东开放平台是京东商城提供给商家和开发者的一套开放平台服务,包括商品查询、订单管理、用户授权、营销推广等功能。开发者通过使用open-api-sdk可以方便地使用京东开放平台的各种接口,节省开发时间和精力。 open-api-sdk的版本号为2.0,表示这已经是该工具包的第二个大版本,在之前版本的基础上进行了更新和改进。新版本的sdk通常包含更多功能、修复了之前版本中的bug,并提供更好的兼容性和稳定性。 使用com.jd.open.api:open-api-sdk:2.0可以通过调用相应的接口实现与京东开放平台的连接和数据交互。例如,开发者可以使用该工具包中提供的接口发送商品查询请求,获取商品的详细信息;也可以使用接口进行订单管理,包括订单创建、取消、查询等操作。 此外,open-api-sdk还提供了其他一些功能,如用户授权、优惠券领取与使用、营销推广等。开发者可以根据自己的需求选择使用相应的接口,与京东开放平台进行集成开发。 总之,com.jd.open.api:open-api-sdk:2.0是京东开放平台提供给开发者的Java开发工具包,可以方便地与京东开放平台进行对接和交互,实现商品查询、订单管理、用户授权等功能。开发者可以根据具体需求使用该工具包中提供的接口,进行开发和集成。
评论 85
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值