# OpenAPI
<font color="6B7280">最近更新时间：2021-12-20 10:02:05</font>

### 背景信息

BaaS平台定义了一套OpenAPI接口，使用户的第三方系统可以直接与BaaS系统对接，在用户的第三方系统上展示和控制BaaS的相关功能，如链基本操作、应用管理等。

第三方系统与BaaS系统对接需要申请开启OpenAPI功能。申请流程需要由系统管理员审批，审批通过后会自动分配唯一的App_Key和APP_Secret，用于生成签名Sign。

### 申请授权

登录复杂美BaaS平台，在页面左上角切换为个人控制台。

在左侧导航栏选择OpenAPI > 授权管理，然后单击申请授权。

在添加应用对话框，设置应用名称，获取并输入验证码，然后单击确定。

![](../../assets/control8.jpg)

应用名称，设置为需要与BaaS系统对接的第三方系统名称。添加完成后，需要联系系统管理员审批流程，审批通过后才会生成App_Key和APP_Secret。  

### 体验OpenAPI

根据开启OpenAPI功能时生成的App_Key和APP_Secret计算出签名sign，发送请求时，BaaS网关会校验签名sign，校验通过后路由到对应的后端服务。
![](../../assets/control9.jpg)
1. 构造下列字符串，对字符串进行MD5散列计算得到签名sign。          
   accessKey=***&N=***&nonce=4321&securityKey=***&timestamp=***
   注意：字符串中参数按照首字母的先后顺序排列；计算出来的sign值全部使用小写，否则后续发送请求时会出现错误。

参数 | 描述
-|-|-
accessKey | 即BaaS平台上的App_Key。
securityKey | 即BaaS平台上的APP_Secret。
N | 需要访问的具体服务相关参数，BaaS系统中的接口文档展示了接口的相关参数。如访问授权的应用名称name。
timestamp | 时间戳。5分钟会失效，更换时间戳需要重新计算签名sign。
nonce | 随机数。

2. 发送请求：http://< IP >/api/clients?accessKey=\*\*\*&sign=\*\*\*&N=\*\*\*&timestamp=\*\*\*&nonce=4321

参数 | 描述
-|-|-
IP | BaaS系统的IP地址。
Clients | 具体服务的接口名称，根据实际接口修改。
Sign | 计算得到的签名sign。
N | 具体接口的参数，BaaS系统中的接口文档展示了接口的相关参数

