{{i18nTranslate('_layout.t11')}} {{i18nGetLang()==='zh' ? 'EN' : '中文'}}

# API认证

在调用API时，需要通过令牌（AccessToken）对用户权限进行认证。

## 步骤1：创建AccessKey

AccessKey分为两种，一种是是用户AccessKey，可以用来管理跟此用户相关的数据，另外一种是管理员API，可以管理所有管理员能操作的数据。

### 用户AccessKey

从v0.2.1开始，如果你还没有用户AccessKey，则需要在”平台用户” – 用户”详情” – “API AccessKey”中创建。

商业版的用户可以自行在用户平台”访问控制”页面中点击”创建AccessKey”，然后创建一个AccessKey。

### 管理员AccessKey

从v0.2.3开始，如果你还没有管理员AccessKey，则需要在”系统用户” – 用户”详情” – “API AccessKey”中创建。

## 步骤2：调用API获取AccessToken

### 接口地址

    /APIAccessTokenService/getAPIAccessToken

### 请求方法

POST。

### 请求参数

    {
        "type": "admin",
        "accessKeyId": "zr9cmR42AEZxRyIV",
        "accessKey": "2w5p5NSZZuplUPsfPMzM7dFmTrI7xyja"
    }

其中

- `type` - 如果是用户（即平台用户）AccessKey，则值为 `user`；如果是管理员（即系统用户）AccessKey，则值为 `admin`；
- `accessKeyId` 和 `accessKey` 换成你在步骤1中创建的AccessKey对应的数据。

### 响应结果

    {
       "code": 200,
       "data": {
          "token": "IKNSMufZ1vDiXp5rSd9QR01m1174Oum5sah4amWFgbRb7lOKjuk62Spl7hgcazctzGhGG7jPgfmYUPojulC0FK5cLbrj8n7kxW7BtSawH9gWW14IWOzBY6UcpyXQndFu",
          "expiresAt": 1609686945
       },
       "message": "ok"
    }

其中：

- `code` - 如果是 `200` 表示成功，否则表示失败
- `token` - 就是AccessToken，可以在别的接口中通过HTTP Header `X-Edge-Access-Token` 传入；
- `expiresAt` - 过期时间戳，默认为N个小时，过期后请及时重新获取。

多次调用此接口会导致先前获取的AccessToken失效。

### CURL示例

对管理员来说，可以使用curl命令调用接口获得Token：

    curl -XPOST "http://192.168.1.6:8004/APIAccessTokenService/getAPIAccessToken" -d '{
       "type":"admin",
       "accessKeyId":"zr9cmR42AEZxRyIV",
       "accessKey":"2w5p5NSZZuplUPsfPMzM7dFmTrI7xyja"
    }'

你需要把API地址、accessKeyId、accessKey换成你自己的。

对平台用户来说，可以使用curl命令调用接口获得Token：

    curl -XPOST "http://192.168.1.6:8004/APIAccessTokenService/getAPIAccessToken" -d '{
       "type":"user",
       "accessKeyId":"JOvsyXIFqkQbh5kl",
       "accessKey":"t0RY8YO3R58VbJJNp0RqKw9KWNpObwtE"
    }'

你需要把API地址、accessKeyId、accessKey换成你自己的。

## 步骤3：调用API

在 API列表 找到要调用的API，然后以POST方式调用 `/服务/方法` 组合后的URL，在Header中加入 `X-Edge-Access-Token` ，值为步骤2中的生成的AccessToken接口，具体可以参考 API调用概述 。

{{i18nTranslate('_layout.t27')}}
{{i18nTranslate('_layout.t12')}}