目录
一、在钉钉开放平台管理后台创建应用(用于获取appKey和appSecret)
1、打开钉钉放平台-开发者后台(开放平台地址:钉钉开放平台)
3、点击应用打开应用详情-权限管理-搜索宜搭开启自己需要用到的权限
二、在阿里云FC函数对宜搭服务端接口进行封装(防止前端调用服务端接口跨域与鉴权泄漏)
3、点击测试函数运行测试(提示执行成功,并返回实例ID则证明测试成功)
一、在钉钉开放平台管理后台创建应用(用于获取appKey和appSecret)
1、打开钉钉放平台-开发者后台(开放平台地址:钉钉开放平台)
2、点击应用开发-创建应用-填写应用信息
3、点击应用打开应用详情-权限管理-搜索宜搭开启自己需要用到的权限
4、点击凭证与基础信息获取appKey和appSecret
二、在阿里云FC函数对宜搭服务端接口进行封装(防止前端调用服务端接口跨域与鉴权泄漏)
引用接口文档链接:
1、安装axios库
npm install axios -S
//安装命令
2、创建函数封装方法
var axios = require('axios');
// 定义常量dataKey,存储appKey和appSecret
var dataKey = JSON.stringify({
"appKey": "替换为钉钉管理后台创建应用的appKey",
"appSecret": "a替换为钉钉管理后台创建应用的appSecret"
});
// 定义常量configKey,存储请求token的配置信息
var configKey = {
method: 'post',
url: 'https://api.dingtalk.com/v1.0/oauth2/accessToken',//开放平台获取token接口
headers: {
'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
'Content-Type': 'application/json',
'Accept': '*/*',
'Host': 'api.dingtalk.com',
'Connection': 'keep-alive'
},
data: dataKey
};
// 获取token的异步函数
async function gettoken() {
return new Promise(async (resolve) => {
try {
const response = await axios(configKey); // 发起请求获取token
resolve(JSON.stringify(response.data)); // 将token数据转为JSON字符串并返回
} catch (error) {
resolve(error); // 返回错误信息
}
});
}
// 发起请求并获取数据的异步函数
async function getdata(params) {
const token = await gettoken(); // 调用gettoken函数获取token
// 构造请求数据
var data = JSON.stringify({
"appType": "宜搭应用编码",
"systemToken": "宜搭应用token",
"userId": "发起人钉钉userId",
"formUuid": "发起的审批表单ID",
"formDataJson": JSON.stringify(params),
"processCode": "发起的审批表单流程Code"
});
// 请求配置信息
var config = {
method: 'post',
url: 'https://api.dingtalk.com/v1.0/yida/processes/instances/start',
//开放平台发起审批接口
headers: {
'x-acs-dingtalk-access-token': JSON.parse(token).accessToken, // 设置请求头中的token
'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
'Content-Type': 'application/json',
'Accept': '*/*',
'Host': 'api.dingtalk.com',
'Connection': 'keep-alive'
},
data: data
};
return new Promise(async (resolve) => {
try {
const response = await axios(config); // 发起请求获取数据
resolve(JSON.stringify(response.data)); // 将响应数据转为JSON字符串并返回
} catch (error) {
resolve(error); // 返回错误信息
}
});
}
exports.handler = async (req, resp, context) => {
var body = req.body;
var params = {
'组件1唯一标识': JSON.parse(body.toString()).name, // 获取请求体中的name字段值
'组件2唯一标识': JSON.parse(body.toString()).emali, // 获取请求体中的emali字段值
'组件3唯一标识': JSON.parse(body.toString()).title, // 获取请求体中的title字段值
'组件4唯一表示': JSON.parse(body.toString()).content // 获取请求体中的content字段值
};
const data = await getdata(params); // 调用getdata函数获取数据
resp.setHeader("Content-type", "application/json");
resp.send(data); // 发送响应数据
};
三、阿里云FC函数测试
1、点击函数计算左上角按钮向下的箭头配置测试参数信息
请求方式:post
Body参数:按照自己需要传的字段数据进行填写
2、配置完成之后点击部署按钮进行代码部署
3、点击测试函数运行测试(提示执行成功,并返回实例ID则证明测试成功)
四、拿到接口地址在第三方系统调用