Webhook节点中Token定时刷新和签名加密的示例


本文介绍如何在明道中进行API鉴权自动刷新和调用前参数进行签名加密,学会这些可以说市面上90% 的第三方API接口都可以独立完成调用。

(以分贝通对接案例讲解)

一、Token的自动刷新

二、签名的加密

    1. Token的自动刷新

应用程序可通过调用开放平台提供的API获取到第三方的数据,因为涉及数据隐私,所以在使用前必须获得企业/会员的授权,才可以调用API(公开数据除外)。所以就需要获取用户的授权,以及保证授权的有效性。

第一次获取授权请手动获取,把对应的数据保存到一张工作表中来进行维护,Token初始化后,可以设置【自动刷新token】 工作流,来保证token的有效性。

如下图:

image.png

实现原理:

由于大部分的第三方API授权接口返回都包含三个参数:(access_tokenrefresh_tokenexpires_in),我们根据每次返回的Expires_in 过期时间来计算出下一自动刷新token的时间。

如果第三方平台没有Expires_in 返回 ,一般第三方API文档中会有说明token的时效。例如: 2小时、7小时、 1天 、7天不等,可以根据时效自动计算下次的自动刷新时间。

工作流设置步骤如下:

新建工作流->选择按日期字段触发

image.png

    1. 调用token刷新接口,拿到对应的返回值:

image.png

    1. 对于Expires_in参数进行处理 ,计算Token时效。

image.png

    1. 计算得到下次需要刷新Token的时间

image.png

    1. 将获取到的 新Token和 下次刷新Token时间 写入到 工作表中

image.png

三、一个简短的加密代码

如下图,只对pwa这个内容进行加密的代码。

复制下面代码直接使用

var crypto = require('crypto');
var pwa="yks123456";
function md5(s) 
{ 
var hash = crypto.createHash('md5');
hash.update(s);
return hash.digest('hex');
}
output={pwa_md5:md5(pwa)};

四、JavaScript中签名的加密

场景:点击按钮后,获取分贝通机票列表信息并写入到工作表。

对于分贝通平台,接口信息文档,Appkey需要作为参数参与签名,且不参与传递。

加密数据包括 时间戳timestamp和data数据,以上三个数据按照 “timestamp={0}&data={1}&sign_key={2}”顺序拼接后,进行MD5加密。

    1. 通过代码块节点,完成加密

image.png

以下是代码块节点中的代码

var crypto = require('crypto');//引入加密 
var key=input.singKey; //appkey 
var page=input.page;
var timespan=new Date().getTime();//获取时间戳
var data={};
data.page\_index=new Number(page);
data.page\_size=20;
data.state=0;//获取所有状态
data.search\_category=1;//获取所有企业
var signstr=new Buffer.from("timestamp="+timespan+"&data="+JSON.stringify(data)+"&sign\_key="+key, 'utf-8')
function md5(s) 
{ 
var hash = crypto.createHash('md5');
hash.update(s);
return hash.digest('hex');
}
output= {timespan:timespan,page_index:page,page_size:data.page_size,sign:md5(signstr),data:JSON.stringify(data)};
    1. 获取到加密sign后,再去调用API

image.png

    1. 通过获取批量数据节点和新增记录节点,将API返回的数据写入到工作表。

image.png

results matching ""

    No results matching ""