数据整合利器,明道云WebHooK节点高级用法教学

在这里插入图片描述
明道云支持API和Webhook功能,今天笔者就教会大家,如何在明道中进行API鉴权自动刷新,以及调用前参数签名,学会这些可以说市面上90% 的第三方API接口都可以调用。(以分贝通对接案例讲解)

一.Token的自动刷新

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

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

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

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

工作流设置步骤如下:

1.新建工作流->选择按日期字段触发在这里插入图片描述

2.调用token刷新接口,拿到对应的返回值:
在这里插入图片描述

3.对于Expires_in参数进行处理 然后更新工作表中的token refresh_token 自动刷新日期。

二.JavaScript中签名的加密

对于分贝通平台,接口信息文档,Appkey需要作为参数参与签名,且不参与传递.加密数据包括时间戳timestamp和data数据,以上三个数据按照 "timestamp={0}&data={1}&sign_key={2}"顺序拼接后,进行MD5加密。

以下在代码块中的具体实现:

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) { //Md5加密

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)};

效果如下图:

在这里插入图片描述

三.WebHook调用以及返回值写入工作表

添加webhook 节点,使用发送自定义请求,POST,接口地址按照接口文档填写下,把代码块返回值按照接口中需要传递的参数一一对应赋值。

获取返回值,获取到数据就可以写入到工作表中,就可以进行审批报销等操作了。关于工作流Wehhook的用法,可以参考帮助文档:《Webhook:如何请外部系统API请求数据,并写入工作表》
在这里插入图片描述

最终效果如下图:

在这里插入图片描述

总结

只要了解nodejs 中的加密方式,根据这个教程,参考其他第三方接口文档一步步来,一定可以完成设置。

如有需要欢迎咨询!

参考资料

  1. 分贝通签名规则说明:http://docs.open.fenbeitong.com/open-api/2apijie-ru/22-apijie-ru-shuo-ming/221-qian-ming-suan-fa.html
  2. 分贝通获取机票列表地址:http://docs.open.fenbeitong.com/open-api/2apijie-ru/25-ji-piao/252-ji-piao-ding-dan-xiang-qing.html
  3. nodejs加密(sha1 base64 md5)参考地址:http://nodejs.cn/api/crypto.html#crypto_crypto

猜你喜欢

转载自blog.csdn.net/mingdaoyun/article/details/106073326