鉴权
所有 API 功能都需要合法的授权。授权凭证的签算需要觅知开放平台账号下的一对有效的 Access Key 和 Secret Key ,这对密钥可以通过如下步骤获得
获取 AK/SK
步骤说明
- 1.注册开放平台账户
- 2.进入控制台密钥管理
- 3.申请 AK / SK
签名获取
说明:
- 1.签算方法:HmacSHA256
- 2.签算参数:Access Key、Secret Key、请求方法、请求路径、请求参数、请求体
- 3.签算结果:Base64 编码
步骤说明:
保证当前发起请求的服务器时间与授时中心时间保持一致,误差不能超过
1分钟
获取当前服务器的时间戳
Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数
放入请求 Header 字段Timestamp
生成请求流水号放入请求 Header 字段
X-Request-Id
中将请求参数按照键名
自然排序
正序后根据键名=键值
依次使用&
符号拼接const reqParams = { page: 1, pageSize: 100, keyword: "测试", }; const paramStr = Object.keys(reqParams) .sort() .map((key) => `${key}=${reqParams[key]}`) .join("&");
将上一步得到的字符串拼接上请求方法(GET/POST/PUT/DELETE)、
请求路径
、请求的 Content-Type 的值
、时间戳
、X-Request-Id
const signStr = `${paramStr}&${method}${path}${contentType}${t}${xRequestId}`;
对签名字符使用 hmac_sha256 加密获取签名字符串并且使用 base64 编码(需要注意的是请确保 base64 编码的字符串是经过 hmac_sha256 加密后的
十六进制字符串
)const sign = base64_encode(hmac_sha256(signstr,${SK}))
将 Access Key 和签名字符串使用
:
拼接后放入请求 Header 字段AccessToken
中const accessToken = `${AK}:${sign}`;
上述步骤总共需要发送的请求头字段有
Timestamp
、X-Request-Id
、AccessToken
、Content-Type
示例请求
搜索
接口POST https://plt.v5ppt.com/api/search/ppt
的伪代码如下:const reqParams = { page: 1, pageSize: 100, keyword: "测试", }; const paramStr = Object.keys(reqParams) .sort() .map((key) => `${key}=${reqParams[key]}`) .join("&"); const reqUrl = "https://plt.v5ppt.com/api/search/ppt"; const t = Math.floor(Date.now() / 1000); const xRequestId = uuidv4(); // 拼接参数与必要请求值 const signStr = `${paramStr}&POST/api/search/pptapplication/x-www-form-urlencoded; charset=UTF-8${t}${xRequestId}`; //accessToken的格式是AK:SIGN 两个字符串通过:拼接 const accessToken = `${AK}:${base64_encode(hmac_sha256(signStr, SK))}`; const reqHeaders = { Timestamp: t, "X-Request-Id": xRequestId, AccessToken: accessToken, "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", }; response = axios.post(url, paramStr, reqHeaders);
用于测试的签名的辅助接口
- 接口地址
https://plt.v5ppt.com/auth/sign-test/*
- 用于测试请求接口签名是否正确,不参与业务逻辑,仅用于测试
- 支持请求方法:
GET
、POST
、PUT
、DELETE
、PATCH
、HEAD
、OPTIONS
、TRACE
- 基本使用说明
- 按照开放接口的文档要求使用与要求相符的请求方法、header、参数、path
- 使用具体接口的 url path 替换
https://plt.v5ppt.com/auth/sign-test/*
中的*
- 示例:请求
搜索
接口POST https://plt.v5ppt.com/api/search
,则请求地址为https://plt.v5ppt.com/auth/sign-test/api/search
- 请求参数
- 任意参数
- 请求体
- 任意请求体
- 请求返回结果示例:https://plt.v5ppt.com/auth/sign-test/api/search
{ "code": 200, "msg": "成功", "data": { "Access Key": "", "other": [ "GET", "/api/search", "application/x-www-form-urlencoded; charset=utf-8", "", "" ], "二次绑定参数": {}, "待签名字符串": "&GET/auth/sign-test/application/x-www-form-urlencoded; charset=utf-8", "接收签名": "", "生成签名": "09041111c68f36597a7190423d2274c4ea5184b5f74cd0e2b46fa0385dac391a", "签名base64解码": "", "请求参数": {}, "错误列表": [ "请求Timestamp不能为空", "请求X-Request-Id不能为空", "AccessToken格式错误", "请求过期", "签名校验失败" ] } }