# 2、商家授权指南


## 2.1、商家概述

2
对于 FDOP 中需要授权的接口，需要商家授权 ISV 应用后，应用才能正常调用需要授权的接口。
FDOP 采用 OAuth2.0 协议的授权码模式。要求 ISV 应用有后端服务，包括：应⽤唯一标识 (app_key) ，授权后的重定向地址 (redirect_uri) ，接受返回的授权码 code ；并使用授权码 code 获取授权令牌 accessToken 。授权过程如下：

 ![img](https://s3.forcloudcdn.com/item/images/dmc/8ae8b577-b1e8-41d1-a594-6f7a2145b0bd-1050x924.png)



## 2.2、详细流程

![img](https://s3.forcloudcdn.com/item/images/dmc/0c1dbf41-8b7f-48e5-9706-5d0bfcfb1a5f-808x120.png)

#### 2.2.1 第一步：创建应用 创建应用 参考《开发入驻指南》 申请和创建应用。

#### 2.2.2 第二步：拼接授权 URL 拼接授权URL 1. 如果您的应⽤用和 FD 开放平台对接时需要获取卖家隐私数据（如商品、订单等），为保证卖家数据的安全与隐私，您的应⽤用需要取得卖家的授权，即获取访问卖家数据的授权令牌 Access Token。这种情况下，您的应⽤用需要引导卖家完成使⽤用 FD 卖家帐号 “ 登录授权 ” 的流程。
拼接规则示例： https://business.fordeal.com/auth/authorize?response_type=code&client_id=${app_key}&redirect_uri=http://应用重定向链接&state=附加信息
2. 授权 URL 相关参数说明：
| 参数名称  描述说明 | 示例  是否必选 |
|------------------|------------------|------------|------------------|
| client_id | 等同于appKey，创建应用时获得 | e4b33571019e49eda101d08521ba796f | 是 |
| response_type  授权类型 ，值为code | code 固定值  是 |
|---------------------------------------------|------------------------------------------|------------------------------|---------|
| redirect_uri | redirect_uri指的是应用发起请求时，所传的回调地址参数，在用户授权后应用会跳转至redirect_uri。  要求与应用注册时填写的回调地址域名一致 | 可填写应用注册时回调地址 | 是 |
| state  维持应用的状态，传入值与返回值保持一致 | 可自定义，如1212等  是 |
|---------------------|---------------------------------------------------------------|---------------------------------------|---------|

#### 2.2.3 第三步： 引导用户登录授权 引导用户登录授权 用户通过浏览器访问以上授权 url ，将弹出如下登录页面。用户输⼊账号、密码后，点击“授权”按钮，即完成授权。系统会自动将授权码 code 返回到回调地址上，应⽤可以获取并使用该 code 去换取 accesstoken （注意 code 的有效期很短，尽量使用程序（⽽非⼿工复制）获取到代码后立刻换取 accesstoken ，否则 code 很快失效）。

#### 2.2.4 第四步： 获取授权码 code 获取授权码code 第一红框为回调地址 redirect_uri; 第二个为授权码 code 。
 ![img](https://s3.forcloudcdn.com/item/images/dmc/0ce98e3c-16b8-42cb-aa38-6c1d8c3c4cbb-645x39.png)

#### 2.2.5 第五步： 获取授权令牌 accessToken 获取授权令牌accessToken 1. 利用在第四步获取的授权码 code ，调用获取访问令牌接口获取授权令牌 accessToken 。
2. 获取到了授权令牌 accessToken, 就可以通过 accessToken 调用需要授权的接口。
获取访问令牌（ access_token ）地址：
https://cn-merchant-api-seller.fordeal.com/api/oauth2/access_token?client_id=fordeal_helper&secret=SlKR195P4tjcDQTFgRFgwChDbddFN8wn&code=ubVQpSCUnKAlbzu8iIVxx3oSZFjmQFiZ&grant_type=authorization_code

获取授权令牌的参数说明：
| 参数名称  描述说明 | 参数值  是否必选 |
|------------------|------------------|---------------|------------------|
| client_id | 等同于appKey，创建应用时获得 |  | 是 |
| secret  应用密钥，创建应用时获得 |   是 |
|------------------------|------------------------------------------|------|---------|
| code | 第四步获取授权码code得到 |  | 是 |
| grant_type  授权类型，值为authorization_code | authorization_code  是 |
|------------------------------------|---------------------------------------------------------------------------------|------------------------------------------------------------|---------|

获取授权令牌返回值示例：





获取授权令牌返回参数说明：
| 参数名称  参数类型 | 示例  参数说明 |
|------------------|------------------|------------|------------------|
| accountId | Long | 10000 | Fordeal平台账号id |
| appKey  String | fordeal_helper  app key |
|------------------------|------------------------|------------------------------------------------|---------------------------|
| accessToken | String | f42ee2be291a47e9ac1287b5a2b0142d | 访问凭证 |
| refreshToken  String | f169be2290954ea58283d9d966bdc2e2  刷新凭证 |
|------------------------------------------|------------------------|------------------------------------------------------------------------------------------------------|------------------|
| accessTokenExpiresIn | Long | 1527472460769 | 访问凭证过期时间，  Unix时间戳，单位是秒 |
| refreshTokenExpiresIn  Long | 1527472460769  刷新凭证过期时间  ，  Unix时间戳，单位是秒 |
|---------------------------------------------------------------------|------------------|---------------------------------------------|---------------------------------------------------------------------------------|


#### 2.2.6 刷新授权 刷新授权 accessToken是调用接口的授权关系凭证，过期以后不可使用，所以需要在失效之前使用refreshToken来调用刷新访问令牌接口刷新授权，这里特殊说明，如果refreshToken也已失效，则需要商家进行重新授权。
刷新访问令牌（ access_token ）地址： https:// cn-merchant-api-seller .fordeal.com/ api/oauth2/refresh_token?client_id=fordeal_helper&grant_type= refresh_token&refresh_token=98c0fec7f2ea4ed1ad3170d37f27bfad

获取授权令牌的参数说明：
| 参数名称  描述说明 | 参数值  是否必选 |
|------------------|------------------|---------------|------------------|
| client_id | 等同于appKey，创建应用时获得 |  | 是 |
| refresh_token  第五步获取授权令牌得到 |   是 |
|---------------------------------------------|---------------------------------------|------|---------|
| grant_type | 授权类型，值为refresh_token | refresh_token | 是 |

获取授权令牌返回值示例：








#### 2.2.7 补充说明 补充说明 1. 店铺同时给多个应用授权可能会导致多个应用间的数据不一致，请谨慎操作，建议在授权位置提醒和告知客户 。
