H5使用JS-SDK调用企业微信接口、调试

企业微信开发者工具文档
企业微信-错误码查找工具

写在前面的注意事项

  • config注入的是企业的身份与权限

  • agentConfig注入的是应用的身份与权限

  • jsapi_ticket是H5应用调用企业微信JS接口的临时票据,访问次数受限,需缓存

  • 获取企业的jsapi_ticket,只能用于wx.config计算签名

  • 获取应用的jsapi_ticket,只能用于wx.agentConfig计算签名

  • 签名参数是jsapi_ticket、noncestr(随机字符串)、timestamp(时间戳-秒)、url
    jsapi_ticket=JSAPITICKET&noncestr=NONCESTR&timestamp=TIMESTAMP&url=URL

  • 签名要sha1加密

  • 计算签名的noncestr、timestamp要与获取jsapi_ticket一致

  • 为了安全,jsapi_ticket建议接口返回,同时将计算jsapi_ticket的noncestr、timestamp一并返回,前端再进行加密。也可以所有参数都接口返回,包括加密后的签名。

H5使用JS-SDK调用企业微信接口

遇到的报错:
80001: 本地接入sdk成功,本地域名不受信
40093: ticket签名错误,可能需要重新配置一下。
40063: 参数为空
wx.config注入权限,wx.error方法报错: 企业的jsapi_ticket只能用于wx.config计算签名,应用的jsapi_ticket只能用于agentConfig计算签名,可能是配置反了。

  1. 引入所需的js文件

    <!-- config: 所有使用js-sdk接口都需要config配置 -->
    <script src="//res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
    <!-- agentConfig: 注入应用的权限 -->
    <script src="https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script>
    
    
  2. 通过config接口注入权限验证配置
    获取企业的ticket

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

    wx.agentConfig({
        corpid: '', // 必填,企业微信的corpid,必须与当前登录的企业一致
        agentid: '', // 必填,企业微信的应用id (e.g. 1000247)
        timestamp: , // 必填,生成签名的时间戳
        nonceStr: '', // 必填,生成签名的随机串
        signature: '',// 必填,签名,见附录-JS-SDK使用权限签名算法
        jsApiList: ['getContext', 'getCurExternalContact'], //必填,传入需要使用的接口名称
    	success: function(res) {
            // 回调,这里可以调用需要的接口
            // 调用获取H5入口的接口
            getContext() // 在下面
        },
        fail: function(res) {
            if(res.errMsg.indexOf('function not exist') > -1){
                alert('版本过低请升级')
            }
        }
    });
    
  4. 通过ready验证,error处理失败验证

    wx.ready(function(){
        // config信息验证后会执行ready方法,
        // 将页面加载后直接调用的方法放在ready里
        // 需要用户触发时才调用的接口,则可以直接调用。
        // 如果需要配置agentConfig,在这里配置步骤三
    });
    wx.error(function(res) {
    	// 返回错误信息
    })
    
  5. 签名sha1加密
    通过接口返回的timestamp、nonceStr和当前的url处理加密
    url: window.location.href.split('#')[0]

    getJsapiTicket(data) {
    	let params = {
    		jsapi_ticket: data.jsapiTicket,
    		noncestr: data.nonceStr,
    		timestamp: data.timestamp,
    		url: window.location.href.split('#')[0]
    	}
    	let signstr = ''
    	for (let item in params) {
    		signstr += item + "=" + params[item] + "&"
    	}
    	signstr = signstr.substring(0, signstr.length - 1)
    	return sha1(signstr)
    },
    
  6. 调用获取H5环境入口的接口

    function getContext() {
    	wx.invoke('getContext', {}, function(res){
    	    if(res.err_msg == "getContext:ok"){
    	    	// 正常处理业务逻辑
    	    	// 获取当前对话框userid
    	    	getUserid()
    	        // entry  = res.entry ; 
    			// shareTicket = res.shareTicket; //可用于调用getShareInfo接口
    	
    	    }else {
    	        //错误处理
    	    }
    	});
    }
    
  7. 当前外部联系人userId

    function getUserid() {
    	wx.invoke('getCurExternalContact', {
            }, function(res){
            if(res.err_msg == "getCurExternalContact:ok"){
                userId  = res.userId ; //返回当前外部联系人userId
            }else {
                //错误处理
            }
        });
    }
    

企业微信后台管理需要配置

  • 配置可受信的域名,并将生成的文件(.txt)放到域名服务器根目录下
  • 管理后台需要点击,授信(我没账号不太确定)
  • 将H5页面路径配置到入口处

Mac企业微信打开开发者工具

  • command + shift + control + D
  • 帮助 -》开发调试选项 -》浏览器、webView相关 -》 开启webView元素审查

在这里插入图片描述

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
步骤一:引入JS文件 在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.2.0.js 备注:支持使用 AMD/CMD 标准模块加载方法加载 步骤二:通过config接口注入权限验证配置 所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用(同一个url仅需调用一次,对于变化url的SPA的web app可在每次url变化时进行调用,目前Android微信客户端不支持pushState的H5新特性,所以使用pushState来实现web app的页面会导致签名失败,此问题会在Android6.2中修复)。 wx.config({ debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: '', // 必填,企业号的唯一标识,此处填写企业号corpid timestamp: , // 必填,生成签名的时间戳 nonceStr: '', // 必填,生成签名的随机串 signature: '',// 必填,签名,见附录1 jsApiList: [] // 必填,需要使用JS接口列表,所有JS接口列表见附录2 }); 步骤三:通过ready接口处理成功验证 wx.ready(function(){ // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用接口,则可以直接调用,不需要放在ready函数中。 }); 步骤四:通过error接口处理失败验证 wx.error(function(res){ // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。 }); 接口调用说明 所有接口通过wx对象(也可使用jWeixin对象)来调用,参数是一个对象,除了每个接口本身需要传的参数之外,还有以下通用参数: success:接口调用成功时执行的回调函数。 fail:接口调用失败时执行的回调函数。 complete:接口调用完成时执行的回调函数,无论成功或失败都会执行。 cancel:用户点击取消时的回调函数,仅部分有用户取消操作的api才会用到。 trigger: 监听Menu中的按钮点击时触发的方法,该方法仅支持Menu中的相关接口
企业微信H5 JS-SDK是一个用于开发企业微信H5应用的SDK工具,可以实现企业微信的认证、JSAPI调用等功能。下面是企业微信H5 JS-SDK调试方法: 1. 在企业微信开发者后台创建应用,并获取到应用的CorpID和Secret。 2. 在需要调试H5页面中引入企业微信H5 JS-SDKSDK文件,例如: ```html <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> ``` 3. 在页面的JS代码中,初始化企业微信H5 JS-SDK,并配置需要使用接口,例如: ```javascript wx.config({ beta: true, debug: true, appId: 'CorpID', timestamp: '', nonceStr: '', signature: '', jsApiList: ['checkJsApi', 'chooseImage', 'previewImage'] }); ``` 需要将上述代码中的CorpID替换为自己应用的CorpID,timestamp、nonceStr和signature需要根据后端生成的签名参数进行获取。 4. 配置完成后,可以通过调用企业微信H5 JS-SDK提供的接口进行调试。例如,调用企业微信H5 JS-SDK中的chooseImage接口选择图片: ```javascript wx.chooseImage({ count: 1, success: function (res) { var localIds = res.localIds; alert(localIds); // 显示选择的图片的本地ID列表 } }); ``` 5. 在手机上打开需要调试H5页面,使用企业微信扫描二维码或直接打开链接,即可进行调试。 通过上述步骤,就可以进行企业微信H5 JS-SDK调试,通过调试可以验证SDK的功能是否正常,同时可以根据实际需求进行业务逻辑的开发和调试

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值