亚马逊SCPN授权工作流程

亚马逊SPAPI

仅适用于卖家应用

亚马逊卖家中心合作伙伴网络(亚马逊SCPN)授权工作流程是销售伙伴从亚马逊SCPN详细页面发起的OAuth授权工作流程.当您在亚马逊SCPN上列出销售伙伴API应用时,销售伙伴可以通过点击详细页面上的立即授权授权您的应用.

测试您的授权工作流程

在亚马逊SCPN上列出您的应用之前,您应该在您的应用处于草稿状态时测试您的授权工作流程.您的测试工作流程不会与最终的生产工作流程完全相同,但您将能够确保您的应用能够与亚马逊交换参数并接收授权信息.

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

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

2.构建一个或多个用于测试的OAuth授权URI.在OAuth URI中包含version=beta参数(s)以表明该工作流是用于授权处于草稿状态的应用程序.更多信息,请参阅[构建OAuth授权URI](doc authorizing-selling-partner-api-applications#constructing-an-oauth-authorization-uri).

3.在[步骤3.销售伙伴签入你的网站](doc amazon-seller-central-partner-network-authorization-workflow#step-3-the_selling-partner-signs-into-your-website),确保你的工作流在Amazon回调URI中添加version=beta参数,表明该工作流是用于授权处于草稿状态的应用.

你现在可以和与你合作的受信任的销售伙伴测试你的授权工作流程了.或者,你可以使用你自己的销售账户凭证,自己测试工作流程.而不是从[步骤1开始.销售伙伴从亚马逊卖家中心合作伙伴网络启动授权](doc amazon-seller-central-partner-network-authorization-workflow#step-1-the-selling-partner-initiates-authorization-from-amazon-scpn),销售伙伴通过导航到您之前构建的OAuth授权URI开始测试工作流程

**注意:**如果你有一个以上的区域OAuth授权URI,一定要给销售伙伴与他们经营的区域相对应的OAuth授权URI.

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

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

1.在Amazon SCPN中列出你的应用程序.这将你的应用程序从草稿状态变为发布状态.

2.更新你的工作流程,使其不再向[步骤3中的亚马逊回调URI添加version=beta参数.销售伙伴签入你的网站](doc amazon-seller-central-partner-network-authorization-workflow#step-3-the-selling-partner-signs-into-your-website).

现在,任何销售伙伴都可以从[步骤1.开始授权你发布的应用程序,销售伙伴从亚马逊销售中心合作伙伴网络](文件中发起授权 amazon-seller-central-partner-network-authorization-workflow#step-1-the-selling-partner-initiates-authorization-from-the-amazon-scpn).

# 步骤1.销售伙伴从亚马逊SCPN发起授权.

1.销售伙伴登录Seller Central,进入亚马逊Seller Central合作伙伴网络(Amazon SCPN).

2.销售伙伴进入您的应用程序的详细页面,点击立即授权.出现您的应用程序的同意页面.

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

  1. 销售伙伴查看同意页面,审查并接受您的应用程序所要求的数据访问,然后点击登录到您的应用程序名称[your application name] now继续. 销售伙伴可以点击Cancel退出而不进行授权.

2.亚马逊将您在应用注册时提供的Login URI (加载到浏览器中,添加以下查询参数

参数 说明
amazon_callback_uri 一个URI,用于将浏览器重定向到Amazon.
amazon_state 一个由亚马逊生成的状态值,用于防范跨-网站请求伪造攻击.
selling_partner_id 授权你申请的销售伙伴的标识符.

**注意:**如果这是一个测试工作流程(销售伙伴通过导航到你的OAuth授权URI开始)亚马逊包括version=beta参数.如果这是一个生产工作流程(销售伙伴从亚马逊SCPN开始),亚马逊不包括该参数.

举例来说

https://d2yzyfnnpjylxu.cloudfront.net/index.html?amazon_callback_uri=https://amazon.com/apps/authorize/confirm/amzn1.sellerapps.app.2eca283f-9f5a-4d13-b16c-474EXAMPLE57&amazon_state=amazonstateexample&selling_partner_id=A3FHEXAMPLEYWS
1

你的网站的签到-页面出现.

# 步骤3.销售伙伴签入你的网站

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

2.你的应用程序将亚马逊的回调URI (在上一步中由亚马逊传递给你的)载入浏览器,并加入以下参数

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

Optional

amazon_state 亚马逊在上一步传递的amazon_state值.
state

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

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

**注意:**如果你包括version=beta参数,工作流会授权处于Draft状态的应用. 如果你不包括该参数,工作流会授权在Amazon SCPN上发布的应用.

举例来说

https://amazon.com/apps/authorize/confirm/amzn1.sellerapps.app.2eca283f-9f5a-4d13-b16c-474EXAMPLE57?redirect_uri=https://d2yzyfnnpjylxu.cloudfront.net/landing.html&amazon_state=amazonstateexample&state=-37131022&version=beta
1

或者

https://amazon.com/apps/authorize/confirm/amzn1.sellerapps.app.2eca283f-9f5a-4d13-b16c-474EXAMPLE57?redirect_uri=https://d2yzyfnnpjylxu.cloudfront.net/landing.html&amazon_state=amazonstateexample&state=-37131022
1

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

卖家中心简要地显示一个页面,表明亚马逊正在授权您访问销售伙伴的数据.当这个页面显示时,会有以下动作发生

  1. 亚马逊将您的OAuth重定向URI加载到浏览器中(您在注册您的应用程序时指定的第一个URI ),添加以下查询参数
参数 描述
state 你在上一步传递的状态值.
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 登录亚马逊(LWA)授权码,你用它来交换LWA刷新令牌. 更多信息,请参见[Step 5. 你的应用程序用LWA授权码交换LWA刷新令牌](doc amazon-seller-central-partner-network-authorization-workflow#step-5-your-application-exchanges-the-lwa-authorization-code-for-an-lwa-refresh-token).
**Note: **一个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.你的网站的登陆页面显示.

# 步骤5.你的应用程序将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刷新令牌.该调用必须包括以下查询参数

参数 说明
grant_type 请求的访问许可类型. 必须是authorization_code.
code 您在[步骤4中收到的LWA授权码.亚马逊向您发送授权信息](doc amazon-seller-central-partner-network-authorization-workflow#step-4-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
缓存-控制: no-store
Pragma: no-cache
{
  "access_token": "Atza|IQEBLjAsAexampleHpi0U-Dme37rR6CuUpSR",
  "token_type": "不记名"
  "expires_in": 3600,
  "refresh_token": "Atzr|IQEBLzAtAhexamplewVz2Nn6f2y-tpJX2DeX"
}
1
2
3
4
5
6
7
8
9
10
11
  1. 你的应用程序保存了refresh_token值.

  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应用

如果在[步骤4.中返回了MWS授权令牌,亚马逊将向您发送授权信息](doc amazon-seller-central-partner-network-authorization-workflow#step-4-amazon-sends-you-the-authorization-information), 您的应用程序也被授权代表销售伙伴对亚马逊市场网络服务进行调用.更多信息,请参见[混合销售伙伴API应用](doc hybrid-selling-partner-api-applications).