网站授权工作流程

亚马逊SPAPI

网站授权工作流程是一个OAuth授权工作流程,是由你自己的网站发起的.销售伙伴登录你的网站,点击你配置的 "授权 "按钮来发起授权.更多信息,见步骤0.设置 "授权 "按钮.

**注意.**以下步骤中的例子是针对卖方应用的,使用基于Seller Central URL.对于供应商应用,你可以用[Vendor Central URL](doc替换Seller Central URL vendor-central-urls).更多信息,请参阅Constructing an OAuth authorization URI.

测试你的授权工作流程

在创建生产网站授权工作流之前,你应该在你的应用程序处于草稿状态时测试你的授权工作流.通过测试你可以确保你的应用程序可以与亚马逊交换参数并接收授权信息.

建立一个测试的授权工作流程*

1.确保你的应用程序处于草稿状态.

2.在步骤0.设置一个 "授权 "按钮,当你构建一个或多个OAuth授权URI时,将version=beta参数添加到OAuth URI(s)以表明该工作流是用于授权一个处于草稿状态的应用程序.

你现在可以和与你合作的可信的销售伙伴测试你的授权工作流程了.或者,你可以自己测试工作流程使用您自己的销售账户凭证.从步骤1开始.销售伙伴从您的网站发起授权.开始

当你完成了授权工作流程的测试,你可以将其转换为生产工作流程.

将你的测试授权工作流程转换为生产工作流程

1.在亚马逊卖家中心合作伙伴网络中列出你的应用(亚马逊SCPN).这将你的应用从草稿状态变为发布状态.

**重要的是.**您的应用程序必须处于发布状态,Webstore授权工作流程才能发挥作用.

2.从你在步骤0中构建的OAuth授权URI(s)中删除version=beta参数.设置一个 "授权 "按钮.

现在,任何销售伙伴都可以从[步骤1.开始授权你发布的应用程序,销售伙伴从你的网站发起授权](#步骤-1-销售-伙伴-发起-授权-从-你的-网站).开始

# 步骤0.设置一个 "授权 "按钮

在你的应用网站上设置一个 "授权 "按钮(或类似的东西),销售伙伴可以点击这个按钮来启动对你的应用的授权.当销售伙伴点击这个按钮时,你的网站会将一个OAuth授权URI加载到浏览器中,销售伙伴会被转到一个Amazon sign-in页面.在sign-in之后出现一个同意页面,销售伙伴可以同意你的应用程序代表他们调用销售伙伴API.有关构建OAuth授权URI的信息,请参阅[构建OAuth授权URI](doc authorizing-selling-partner-api-applications#constructing-an-oauth-authorization-uri).

注意. 如果你有一个以上地区的OAuth授权URI,一定要设置你的 "授权 "按钮,使销售伙伴被重定向到卖家中心(为卖家)或供应商中心(为供应商)自己地区的签名-in页面.

设置你的 "授权 "按钮(s)是一个一次性的任务.-时间

# 步骤1.销售伙伴从你的网站上发起授权

1.销售伙伴登录您的网站.如果销售伙伴还没有账户,他们将完成您的注册过程.

2.销售伙伴点击你在步骤0.设置 "授权 "按钮.如果你有一个以上的区域 "授权 "按钮,确保销售伙伴被引导到与他们销售的区域相对应的按钮.

3.你的应用程序将OAuth授权URI加载到浏览器中,添加以下查询参数

中的Cross-site request forgery
Parameter Description
redirect_uri 用于将浏览器重定向到您的应用程序的URI.这必须是您在注册您的应用程序时指定的OAuth重定向URI.如果您不包括redirect_uri参数,默认是您在注册您的应用程序时指定的第一个OAuth重定向URI.

Optional

state

由你的应用程序生成的一个状态值.你的应用程序使用这个值来维持这个请求和响应之间的状态,有助于防范跨-网站请求伪造攻击.

重要的是:由于OAuth信息是通过URL查询参数传递的,我们强烈建议你做以下工作1)确保状态令牌是短暂的-寿命,并且可以验证对你的用户是唯一的,2)设置Referrer-Policy: no-referrer HTTP头,这可以防止敏感信息泄露给你网站链接的网站.关于跨-网站请求伪造和计算状态参数的更多信息,请参阅Login with Amazon documentation.

**注意:**如果你包括version=beta参数,工作流会授权处于草稿状态的应用程序.如果你不包括该参数,工作流会授权在Amazon Seller Central Partner Network上发布的应用程序.

举例来说

https://sellercentral.amazon.com/apps/authorize/consent?application_id=appidexample&state=stateexample&version=beta
1

或者

https://sellercentral.amazon.com/apps/authorize/consent?application_id=appidexample&state=stateexample
1

销售伙伴到达卖家中心(为卖家)或供应商中心(为供应商).的签署-页面

# 步骤2.销售伙伴同意授权该申请

1.销售伙伴根据你构建的OAuth授权URI的类型,登录到Seller Central或Vendor Central.出现同意页面.更多信息,见构建OAuth授权URI.

2.销售伙伴查看同意页面,审查您的应用程序所要求的数据访问,然后点击确认继续.销售伙伴可以点击取消退出,不进行授权.

# 第3步.亚马逊向您发送授权信息

亚马逊简要地显示一个页面,表明我们正在授权你访问销售伙伴的数据.当该页面显示时,会有以下动作发生

  1. 亚马逊将您的OAuth重定向URI加载到浏览器中(您在注册您的应用程序时指定的第一个URI),添加以下查询参数
参数 描述
state 来自步骤1.的状态值,卖方从.
selling_partner_id 授权你的申请的销售伙伴的识别码.
mws_auth_token 您在创建调用亚马逊市场网络服务的查询字符串时使用的MWSAuthToken值. mws_auth_token参数仅在销售伙伴授权混合销售伙伴API时传递(SP-API)应用.注意,如果你是授权混合SP-API应用的销售伙伴,并且是应用所有者(意味着你自我-授权了你自己的亚马逊MWS应用),你将不会收到MWSAuthToken.更多信息见[混合销售合作伙伴API应用程序](doc hybrid-selling-partner-api-applications). 仅适用于卖家应用.
spapi_oauth_code Login with Amazon (LWA) 授权码,你用它来交换LWA刷新令牌. 更多信息见步骤4.你的应用程序用LWA授权码交换LWA刷新令牌.
**注 ** LWA授权码在5分钟后过期.请确保在过期前将其换成LWA刷新令牌.

比如说

https://client-example.com?state=state-example&mws_auth_token=mwsauthtokenexample&selling_partner_id=sellingpartneridexample&spapi_oauth_code=spapioauthcodeexample
1

2.你的应用程序验证状态值.

  1. 你的应用程序保存selling_partner_id, mws_auth_token ( if passed), 和spapi_oauth_code值.

4.你的网站的登陆页面显示.

# 步骤4.你的应用程序将LWA授权码换成LWA刷新令牌

Login with Amazon SDK for JavaScript可以帮助您将LWA授权码交换为LWA刷新令牌.

注意: LWA授权码在5分钟后过期.请确保在过期前将其换成LWA刷新令牌.

欲了解更多信息,请参见Login with Amazon 文档

用LWA授权码交换LWA刷新令牌

1.你的应用程序调用Login with Amazon (LWA)授权服务器(https://api.amazon.com/auth/o2/token)以交换LWA授权码为LWA刷新令牌.该调用必须包括以下查询参数

参数Description
grant_type 请求的访问授权类型.必须是授权代码.
code The LWA authorization code that you received in Step 3. Amazon sends you the authorization information.
redirect_uri 你的应用程序的重定向URI.
client_id 您的LWA凭证的一部分.要获得这个值,请参见查看您的开发者信息.
client_secret 你的LWA凭证的一部分.要获得这个值,请参见查看你的开发者信息.

举例来说

POST /auth/o2/token HTTP/l.l
主机: api.amazon.com
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
grant_type=authorization_code&code=SplxlOexamplebYS6WxSbIA&client_id=foodev&client_secret=Y76SDl2F
1
2
3
4
  1. LWA授权服务器返回LWA刷新令牌. 响应为JSON格式,包括以下元素.
参数 描述
access_token 一个令牌,授权你的应用程序代表销售伙伴采取某些行动. 见连接到销售伙伴API.
token_type 返回的token的类型.应该是bearer.
expires_in 访问令牌失效前的秒数.
refresh_token 一个很长的-寿命的令牌,可以交换一个新的访问令牌.见连接到销售伙伴API.
HTTP/l.l 200 OK
Content-Type: application/json;
charset UTF-8
Cache-Control: no-store
Pragma: no-cache
{
  "access_token":"Atza|IQEBLjAsAexampleHpi0U-Dme37rR6CuUpSR",
  "token_type": "bearer",
  "expires_in":3600
  "refresh_token":"Atzr|IQEBLzAtAhexamplewVz2Nn6f2y-tpJX2DeX"
}
1
2
3
4
5
6
7
8
9
10
11
  1. 你的应用程序保存了刷新令牌的值.

  2. 浏览器向销售伙伴显示一个页面,指出使用你的应用程序的下一步行动.

LWA刷新令牌是一个长期的令牌,你用它来交换LWA访问令牌.通过这种令牌交换获得的访问令牌必须包含在对所有销售伙伴API操作的调用中,除了[限制性操作](doc tokens-api-use-case-guide)和grantless operations,它们使用的授权模式有些不同.访问令牌发出后,有效期为一个小时.同一访问令牌可用于多次API调用,直到过期.

要使用生成的SDK将刷新令牌换成访问令牌,请参阅[使用生成的Java SDK连接到销售伙伴API](doc 连接-to-the-selling-partner-api-using-a-generated-java-sdk). 要手动将刷新令牌换成访问令牌,请参见Connecting to the Selling Partner API.

用于混合销售伙伴API应用

如果在[步骤3.中返回了MWS授权令牌,亚马逊会向您发送授权信息](doc website-authorization-workflow#step-3-amazon-sends-you-the-authorization-information),你的应用程序也被授权代表销售伙伴调用亚马逊MWS.更多信息,请参见[Hybrid Selling Partner API applications](doc hybrid-selling-partner-api-applications).