c# 这里以c# MVC为例,引用JS-SDK,注入应用的权限,并作一个打开微信对话窗口Demo
官方文档
1、效果图
通过点击URL --> 打开指定人对话窗口
2、开发流程
2.1、设置应用可信域名
所有的JS接口只能在企业微信应用的可信域名下调用(包括子域名),且可信域名必须有ICP备案且在管理端验证域名归属。
验证域名归属的方法在企业微信的管理后台“我的应用”里,进入应用,设置应用可信域名。
企业微信申请域名验证
eg: 将WW_verify_gPO4DZteSvyQZNRk.txt文件放到IIS文件夹底下
2.2、引入js
调用 wx.agentConfig需要引入 jwxwork sdk
<script src="//res.wx.qq.com/open/js/jweixin-1.2.0.js" type="text/javascript"></script>
2.3、注入应用的权限
前提:
- 企业微信的corpid
- 企业微信的应用id
- 企业微信的secret
signature获取:
corpid + secret --> access_token --> ticket --> 拼接参数加密
JS-SDK使用权限签名算法
wx.agentConfig({
corpid: '', // 必填,企业微信的corpid,必须与当前登录的企业一致
agentid: '', // 必填,企业微信的应用id (e.g. 1000247)
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名,见附录-JS-SDK使用权限签名算法
jsApiList: ['selectExternalContact'], //必填,传入需要使用的接口名称
success: function(res) {
// 回调
},
fail: function(res) {
if(res.errMsg.indexOf('function not exist') > -1){
alert('版本过低请升级')
}
}
});
2.4、 调用打开会话接口
注入应用权限之后就可以测试接口了,打开浏览器调试报错: Uncaught TypeError: wx.agentConfig is not a function
只能发布,然后通过企业微信打开URL才能测试接口
wx.openEnterpriseChat({
// 注意:userIds和externalUserIds至少选填一个。内部群最多2000人;外部群最多500人;如果有微信联系人,最多40人
userIds: 'zhangsan;lisi;wangwu', //参与会话的企业成员列表,格式为userid1;userid2;...,用分号隔开。
externalUserIds: 'wmEAlECwAAHrbWYDOK5u3Bf13xlYDAAA;wmEAlECwAAHibWYDOK5u3Af13xlYDAAA', // 参与会话的外部联系人列表,格式为userId1;userId2;…,用分号隔开。
groupName: '讨论组', // 会话名称。单聊时该参数传入空字符串""即可。
chatId: "CHATID", // 若要打开已有会话,需指定此参数。如果是新建会话,chatId必须为空串
success: function(res) {
var chatId = res.chatId; //返回当前群聊ID,仅当使用agentConfig注入该接口权限时才返回chatId
// 回调
},
fail: function(res) {
if(res.errMsg.indexOf('function not exist') > -1){
alert('版本过低请升级')
}
}
});
3、完整代码
后端
重点在于怎么配置wx.config(为了安全,所有的参数都在服务端获取)
public class HomeController : Controller
{
//private Dictionary<string, DateTime> orderDic = new Dictionary<string, DateTime>();
private static string lastOrderNo;
public ActionResult Index()
{
return View();
}
/// <summary>
/// 获取AccessToken
/// </summary>
/// <returns></returns>
private static string GetAccessToken()
{
//https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
string tokenUrl = string.Format(<