天津矿粉厂电话:18526678933

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

更新时间:2021-04-19 16:50

目录

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

总结

对接亚马逊 SP-API(Selling Partner API) 第三章:Java 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 regionEndpointNorth America (Canada, US, Mexico, and Brazil marketplaces)https://sellercentral.amazon.comEurope (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)

 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:

https://sellercentral.amazon.com/apps/authorize/consent?application_id=amzn1.sellerapps.app.0bf296b5-36a6-4942-a13e-XXXXXXXXXXX&version=betaXXXXXXXXXX&version=beta

注意要点

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

4. Marketplace Appstore workflow Step 1. The seller initiates authorization from the Marketplace Appstore

TODO 这个我没找到【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  填反了出现的。

3. MD9999

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

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

 

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

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

cURL

POST /auth/o2/token HTTP/l.lHost: api.amazon.comContent-Type: application/x-www-form-urlencoded;charset=UTF-8grant_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。

总结

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

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

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

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

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

公司新闻