更新时间:2023-11-02 GMT+08:00
创建泛微OA连接器
- 新建函数getEcoOAToken,函数配置如下:
函数代码如下:
/** * common是平台提供的公共函数,包括方法有post和get请求 * * const common = require("./common.js"); * const headers = {}; * const body = ""; * 示例1:异步调用 * common.httpRequest("http://localhost:8080/test", headers, body, "POST").then((data) => { * if(data.code < 300){ * return data.body; * } * return {}; * }); * * 示例2:同步调用 * const data = await common.httpRequest("http://localhost:8080/test", headers, body, "POST"); * if(data.code < 300){ * return data.body; * } * return {}; * 接口返回 data = { * "headers": {}, * "body": string, * "code": number, * "error": string * } */ /** * * mssiAuthData参数样例 * { * "header":{}, // 连接器认证header参数 * "path": {}, // 连接器认证path参数 * "query":{}, // 连接器认证query参数 * "body":{}, // 连接器认证body参数 * "host":"https://demo.com // API主机地址 * } * */ const encryptpwd = require('node-jsencrypt') const axios = require('axios') function extractEventData(event, name) { let data = event[name] if (event.isBase64Encoded && data) { data = new Buffer(data, 'base64').toString() } return data ? JSON.parse(data) : {} } function getReqInfo(inputData, authData){ let appid = inputData["appid"] let secret = inputData["secret"] let spk = inputData["spk"] let url = inputData["url"] let time = inputData["time"] let ct = new encryptpwd() ct.setPublicKey(spk) cry_secret = ct.encrypt(secret) let req_body = { "appid": appid, "secret": cry_secret, "time": time } // let req_url = authData["host"] + url let req_url = "http://110.41.7.110:6060" + url return { "req_url": req_url, "req_body": req_body } } // 发送请求获取token async function getToken(mssiAuthData, inputData){ let reqInfo = getReqInfo(inputData, mssiAuthData) let url = reqInfo["req_url"] let body = reqInfo["req_body"] let res = {} res = await axios.post( url, {}, {"headers": { "appid": body["appid"], "secret": body["secret"] }} ) return res.data } /** * 函数是方法的入口 * @param {*} event 执行事件(event), 包含用户定义的函数参数以及所选择的的连接器认证相关参数 * @param {*} context Runtime提供的函数执行上下文 * @returns */ exports.handler = async function (event, context) { const inputData = extractEventData(event, 'body') // 用户定义的函数参数数据 const mssiAuthData = extractEventData(event, 'mssiAuthData') // 连接器认证数据 mssiAuthData.securityToken = context.getToken() const dataExtendConfig = extractEventData(event, 'dataExtendConfig') // 流步骤扩展参数 let result = await getToken(mssiAuthData, inputData); return result }
注意需要引入相关依赖包,其它参数默认值:
- 新建Ecology-OA连接器,自定义认证函数选择刚创建的getEcoOAToken函数,连接器配置如下:
父主题: 集成实施最佳实践