什么是自建应用?

一句话概括就是企业内部自用的应用

创建自建应用

登录企业微信管理后台,点击“应用管理”->“应用”,往下面滑动,有个“自建”,点击创建应用

这里随便写写,后面可以改,可见范围的意思是这个自建应用你想让谁看到

创建成功后在刚刚自建那里就会有这个应用了,点进去这个应用详情,设置可信域名、企业微信授权登录

可信域名就是之后你要开发用到的域名,填进去后需要点击“申请校验域名”,有个文件夹,把这个文件夹给后端处理,然后确定;企业微信授权的域名也是填这个域名

滑动到顶部,记录住这个应用的AgentId和Secret,后面开发会用到,去设置应用主页,这个主页是你在企业微信点击应用后进入的页面,可以设置网页和小程序,我这里设置的是网页。

自建应用创建完成!

开发自建应用

我创建的自建应用是网页,这里以网页为例,随便新建个html文件

一、获取访问用户的身份信息

1、获取access_token :这个由后端操作

2、构造网页授权链接:

        var address = window.location.href;
	var addresss = address.split('?');
	if (addresss.length <= 1) {
		var WEB_URL = "https://xxxx/index.html" //应用的主页链接,上面配的应用主页
		var qsurl = "https://open.weixin.qq.com/connect/oauth2/authorize"
		var appid = "xxxxxxx" //企业ID,在企业微信后台-我的企业
		var redirectUrl = encodeURI(WEB_URL)
		var responseType = "code"
		var scope = "snsapi_base"
		var state = "STATE"
		var end = "#wechat_redirect"
		var aimUrl = qsurl + '?appid=' + appid + '&redirect_uri=' + redirectUrl + '&response_type=' + responseType +'&scope=' + scope + '&state=' + state + end
		window.location.href = aimUrl
	}

复制代码

3、获取访问用户身份:需要后端通过下面来写一个接口,将用户信息返回给前端

二、开始开发

首先一定要选对文档,自建应用要选择“企业内部开发”,前端开发选择“客户端API”,选择你要开发的应用类型,因为自建应用的应用主页选择的是网页,所以我们要用到JS-SDK

步骤一:引入JS文件

<script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
复制代码

步骤二:通过config接口注入权限验证配置

所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用

timestamp,nonceStr,signature需要后端配置,jsApiList里面填你会用到的接口

wx.config({
    beta: true,// 必须这么写,否则wx.invoke调用形式的jsapi会有问题
    debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。开发完毕可以false
    appId: '', // 必填,企业微信的corpID,就是企业ID
    timestamp: , // 必填,生成签名的时间戳
    nonceStr: '', // 必填,生成签名的随机串
    signature: '',// 必填,签名,见 附录-JS-SDK使用权限签名算法
    jsApiList: [] // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
});

复制代码

步骤三:通过ready接口处理成功验证

config信息验证成功后会执行ready方法,所有接口调用都必须在config接口获得结果之后;

注意:

1:config是一个客户端的异步操作,需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。

2:对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。

wx.ready(function(){ 
    //页面加载就需要调用的接口,需要写在这里面
});
复制代码

步骤四:通过error接口处理失败验证

config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。

wx.error(function(res){ 
    //这里可以alert失败信息,也可以在上面config的debug出来
});
复制代码

注意:wx.config,wx.ready,wx.error是同级别的,不是父与子的关系,按顺序写下来即可

步骤五:通过agentConfig注入应用的权限

config注入的是企业的身份与权限,而agentConfig注入的是应用的身份与权限。

当调用者为第三方服务商时,通过config无法准确区分出调用者是哪个第三方应用,而在部分场景下,又必须严谨区分出第三方应用的身份,此时即需要通过agentConfig来注入应用的身份信息。

调用 wx.agentConfig需要引入 jwxwork sdk

<script src="https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script>
复制代码
wx.agentConfig({ 
corpid: '', // 必填,企业微信的corpid,必须与当前登录的企业一致 
agentid: '', // 必填,企业微信的应用id 
timestamp: , // 必填,生成签名的时间戳 
nonceStr: '', // 必填,生成签名的随机串 
signature: '',// 必填,签名,见附录-JS-SDK使用权限签名算法
jsApiList: ['selectExternalContact'], //必填,传入需要使用的接口名称
success: function(res) { 
    // 回调 
}, 
fail: function(res) {
    if(res.errMsg.indexOf('function not exist') > -1){ 
        alert('版本过低请升级')
    }
} });
复制代码

调用agentConfig的注意事项

  1. agentConfig与config的签名算法完全一样,但是jsapi_ticket的获取方法不一样,请特别注意
  2. 调用wx.agentConfig之前,必须确保先成功调用wx.config. 注意:从企业微信3.0.24及以后版本(可通过企业微信UA判断版本号),无须先调用wx.config,可直接wx.agentConfig.
  3. 当前页面url中的域名必须是在该应用中设置的可信域名
  4. agentConfig仅在企业微信2.5.0及以后版本支持,微信客户端不支持(微信开发者工具也不支持)
  5. 仅部分接口才需要调用agentConfig,需注意每个接口的说明

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐