Appearance
JSSDK 集成
JSSDK 集成功能用于对接第三方系统的 JavaScript SDK,如微信、钉钉、企业微信等。
支持的 SDK
| SDK | 说明 | 适用场景 |
|---|---|---|
| 微信 JS-SDK | 微信公众号/小程序 | 微信内网页开发 |
| 企业微信 JS-SDK | 企业微信 | 企业微信应用开发 |
| 钉钉 JSAPI | 钉钉 | 钉钉应用开发 |
| 飞书 JS-SDK | 飞书 | 飞书应用开发 |
| 自定义 SDK | 任意第三方 SDK | 其他平台对接 |
集成步骤
1. 引入 SDK 文件
在平台配置中添加外部资源引用:
javascript
// 系统管理 → 系统配置 → 外部资源
// 添加以下引用
// 微信 JS-SDK
loadScript('https://res.wx.qq.com/open/js/jweixin-1.6.0.js');
// 企业微信 JS-SDK
loadScript('https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js');
// 钉钉 JSAPI
loadScript('https://g.alicdn.com/dingding/dingtalk-jsapi/2.10.3/dingtalk.open.js');2. 配置 SDK 权限
每种 SDK 都需要进行权限配置和签名验证:
javascript
// 微信 JS-SDK 配置示例
wx.config({
debug: false,
appId: 'wx_your_appid',
timestamp: '${timestamp}',
nonceStr: '${nonceStr}',
signature: '${signature}',
jsApiList: [
'chooseImage',
'previewImage',
'uploadImage',
'getLocation',
'scanQRCode'
]
});
// 配置成功回调
wx.ready(function() {
console.log('微信 JS-SDK 初始化成功');
});
// 配置失败回调
wx.error(function(res) {
console.error('微信 JS-SDK 初始化失败:', res);
});3. 使用 SDK 接口
SDK 初始化成功后即可调用对应接口。
微信 JS-SDK 使用示例
获取地理位置
javascript
wx.getLocation({
type: 'gcj02',
success: function(res) {
var latitude = res.latitude; // 纬度
var longitude = res.longitude; // 经度
var speed = res.speed; // 速度
var accuracy = res.accuracy; // 位置精度
setControlValue('text_lat', latitude);
setControlValue('text_lng', longitude);
},
fail: function(res) {
showMessage('error', '获取位置失败');
}
});扫码功能
javascript
wx.scanQRCode({
desc: '扫描二维码',
needResult: 1,
scanType: ['qrCode', 'barCode'],
success: function(res) {
var result = res.resultStr;
setControlValue('text_scan', result);
}
});图片上传
javascript
wx.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success: function(res) {
var localIds = res.localIds;
// 上传图片
wx.uploadImage({
localId: localIds[0],
isShowProgressTips: 1,
success: function(res) {
var serverId = res.serverId;
// 保存到平台
saveWxImage(serverId);
}
});
}
});企业微信 JS-SDK 使用示例
获取当前用户信息
javascript
wx.qy.login({
success: function(res) {
var code = res.code;
// 通过 code 换取用户信息
getUserInfoByCode(code, function(userInfo) {
console.log('用户信息:', userInfo);
});
}
});发起审批
javascript
wx.qy.openApprovalDetail({
spId: 'approval_id_001',
spNo: '202607010001',
success: function(res) {
console.log('审批详情已打开');
}
});钉钉 JSAPI 使用示例
获取免登授权码
javascript
dd.ready(function() {
dd.runtime.permission.requestAuthCode({
corpId: 'ding_your_corpid',
onSuccess: function(res) {
var code = res.code;
// 通过 code 换取用户信息
getDingTalkUserInfo(code);
},
onFail: function(err) {
console.error('获取授权码失败:', err);
}
});
});选择联系人
javascript
dd.biz.contact.choose({
title: '选择审批人',
multiple: true,
limitTips: '最多选择5人',
maxUsers: 5,
onSuccess: function(res) {
var users = res.users;
setControlValue('text_approvers', users.map(u => u.name).join(','));
}
});自定义 SDK 集成
如果需要对接其他平台的 SDK,可以使用通用的加载方式:
javascript
// 动态加载外部 JS
loadScript('https://example.com/sdk.js', function() {
// SDK 加载完成后初始化
if (window.ExampleSDK) {
ExampleSDK.init({
appId: 'your_app_id',
appKey: 'your_app_key'
});
}
});
// 调用自定义 SDK
function useExampleSDK() {
if (window.ExampleSDK) {
ExampleSDK.doSomething({
param1: 'value1',
param2: 'value2'
}, function(result) {
console.log('SDK 调用结果:', result);
});
}
}JSSDK 配置管理
在系统管理 → 第三方集成 → JSSDK 配置中,可以统一管理:
- AppID / AppKey / AppSecret
- 授权域名配置
- 权限接口列表
- SDK 版本管理
注意事项
- JSSDK 通常需要在特定的域名下运行,需要在第三方平台配置授权域名
- AppSecret 等敏感信息应保存在服务端,不要在前端暴露
- 签名验证需要在后端完成,确保安全性
- 不同 SDK 的接口调用方式可能不同,请参考对应官方文档
- 建议封装统一的调用方法,便于后续维护和升级