以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 火绒api接口调用问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=173664) |
|||||||||||||||||||||||||||||||||||
-- 作者:aidimeng -- 发布时间:2021/12/10 16:34:00 -- 火绒api接口调用问题 官方给的api调用说明,看了半天没看懂 1. API接口使用认证机制您可以使用AccessKey构造一个API请求来操作资源。AccessKey包括AccessKey ID和AccessKey Secret。 Header中包含签名您可以在HTTP请求中增加 Authorization 的Header来包含签名(Signature)信息,表明这个消息已被授权。 Authorization字段计算的方法
在URL中包含签名除了使用Authorization Header,您还可以在URL中加入签名信息,以便将该URL转给第三方实现授权访问。 示例代码
构建CanonicalizedResource的方法用户发送请求中想访问的火绒企业版目标资源被称为CanonicalizedResource,它的构建方法如下:
Content-MD5的计算方法
计算规则
2. 请求参数规则统一使用 HTTP-POST JSON 方式传递 2.1 统一响应数据
2.2 响应错误码
|
|||||||||||||||||||||||||||||||||||
-- 作者:有点蓝 -- 发布时间:2021/12/10 16:43:00 -- 有点类似这种:http://www.foxtable.com/webhelp/topics/3389.htm |
|||||||||||||||||||||||||||||||||||
-- 作者:aidimeng -- 发布时间:2021/12/10 16:50:00 -- 看了下 完全不懂是怎么回事,能否简单提示下过程啊 他们给了 postman的代码 3.复制以下代码到postman上 const crypto = require(\'crypto-js\') const secret_key = " K4ALMI1PM1T3X0235RSI" const secret_id = " 41GV47B3ZQ" let expires = new Date().getTime()+604800000 //过期时间 const body = pm.request.body const md5Bytes = crypto.MD5(""+body+"") const contentMD5 = CryptoJS.enc.Base64.stringify(md5Bytes) const path = pm.request.url.getPath() let canonicalizedResource = path.replace(\'/\', \'\') // 参数排序 let sortedParams = [] pm.request.url.query.each(p=>{ if(p.key === \'{{query_para}}\'){ return } if (sortedParams.length == 0){ sortedParams.push(p) }else{ let inserted = false for(var i =0; i < sortedParams.length; i++){ if(sortedParams[i].key > p.key){ sortedParams.splice(i, 0, p) inserted = true break } } if (!inserted){ sortedParams.push(p) } } }) if(sortedParams.length>0){ canonicalizedResource += \'?\' sortedParams.forEach(p=>{ canonicalizedResource += `${p.key}=${p.value}&` }) canonicalizedResource = canonicalizedResource.substring(0, canonicalizedResource.length-1) } const stringToSign = `${secret_id}\\n${expires}\\n${pm.request.method}\\n${contentMD5}\\n${canonicalizedResource}` let hash = crypto.HmacSHA1(stringToSign, secret_key) let sign = hash.toString(crypto.enc.Base64) //使用header验证,需要header中添加 Authorization {{auth_header}} let authInfo = `HRESS${secret_id}:${expires}:${sign}` pm.collectionVariables.set("auth_header", authInfo) //使用uri验证,需要url后加 ?{{query_para}} pm.collectionVariables.set("query_para", `ak=${secret_key}&expires=${expires}&sign=${sign}`) [此贴子已经被作者于2021/12/10 16:59:15编辑过]
|
|||||||||||||||||||||||||||||||||||
-- 作者:有点蓝 -- 发布时间:2021/12/10 17:00:00 -- 过程开发文档有说了,如果看不懂。找对方要.net的实例抄呗 |
|||||||||||||||||||||||||||||||||||
-- 作者:aidimeng -- 发布时间:2021/12/10 17:09:00 -- 只有post的例子,没有别的 |
|||||||||||||||||||||||||||||||||||
-- 作者:有点蓝 -- 发布时间:2021/12/10 17:14:00 -- 这个代码是js,用到了jquery和一个加密的类crypto-js。大概逻辑我能看懂,但是没有能力转换为vb的代码。 |
|||||||||||||||||||||||||||||||||||
-- 作者:aidimeng -- 发布时间:2021/12/10 17:20:00 -- 我对这个接口的验证很晕,完全不懂怎么回事 |
|||||||||||||||||||||||||||||||||||
-- 作者:有点蓝 -- 发布时间:2021/12/10 17:41:00 -- 找对方要.net的例子。如果使用使用js,那要在网页前端使用了,照搬它的js代码和引用js文件即可 |