基于微信企业号的H5应用,相对于单独客户端的应用,具有开发周期短、开发相对简单的特点。微信凭借于庞大的用户群,构建了一个内置于微信中的"类应用商店"。用户只需添加关注,即可马上使用,完全免去下载的烦恼。基于这种优势,目前微信公众号的开发可谓如火如荼。
微信公众平台的账号目前分为3类,分别为服务号,订阅号,企业号,按照是否认证,又区分为普通号和认证号。各种账号的详细区别,可以参考微信公众平台的官网:https://mp.weixin.qq.com/
本文将要描述的是如何开发企业号,包括建立企业号开发环境和一些难点问题。
一. 申请企业号
首先到https://mp.weixin.qq.com/cgi-bin/readtemplate?t=register/step1_tmpl&lang=zh_CN 注册申请企业号, 因为企业号申请要提供一系列企业相关证件,还需要审核。建议在开发阶段先申请体验号, 体验号的申请相当简单快捷,链接地址:https://qy.weixin.qq.com/try
二. 获取可信域名
新建应用的时候,需要绑定一个可信域名。该域名必须是二级或者二级以上域名,而且要通过ICP备案。和微信平台API交互的时候,微信服务器会验证该域名下的地址。
如果企业有域名,且可以用于开发部署,那就最好了。如果没有,也不要着急,可以去开通花生壳内网版(http://www.oray.com/), 开通后花生壳会送你一个域名。然后去下载花生壳(内网版),安装到开发机,设置域名和本地ip的端口映射即可。
如 http://wxdev.iworks.net > 127.0.0.1:80
如果家庭有路由器,可以参考这个网址部署:http://jingyan.baidu.com/article/5bbb5a1b3f871613eaa17948.html
三. 微信API客户端
做好准备工作后,既可以进入开发了。开发之前,建议先仔细阅读接口文档(http://qydev.weixin.qq.com/wiki/index.php?title=接口文档)。如果你的后端采用Asp.Net开发,建议使用senparc提供的SDK。该SDK开源免费,封装了公众号和企业号的API, 并且作者提供了单元测试范例,使用起来非常方便。
四. 组织架构同步
可以通过API将后端系统的组织架构、成员同步到微信企业号的通讯录。
需要注意的是通讯录的组织Id为数字类型,你可能需要创建一张映射表,维护一份后端系统的组织id与通讯录组织id的对应关系.
组织成员可以直接使用账号和后端系统账号对应(注意通讯录的账号不能包含空格)。
以同步组织架构为例,一般包含下面几个步骤:
1) 确保每个组织节点有一个对应的微信组织id
2) 汇出组织树,生成csv文件
3) 上传csv文件,获取media_id
4) 调用全量覆盖部门API,覆盖组织架构
指定的回调地址可以接受到组织数据处理进度,结果等信息。
五. 身份验证
如果应用对应的后端服务站点需要获取当前访问者身份,可以通过调用OAuth2.0验证接口获取。
// 1. 企业可以调用oauth2接口,根据code获取成员的userid。 try { var result = OAuth2Api.GetUserId(accessToken, code); if (result == null || String.IsNullOrEmpty(result.UserId)) { return null; } else { userId = result.UserId; } } catch (Exception ex) { return null; }
通过此接口获取成员身份会有一定的时间开销。对于频繁获取成员身份的场景,微信平台建议采用如下方案:
1) 企业应用中的URL链接直接填写企业自己的页面地址
2) 成员跳转到企业页面时,企业校验是否有代表成员身份的cookie,此cookie由企业生成
3) 如果没有获取到cookie,重定向到OAuth验证链接,获取成员身份后,由企业生成代表成员身份的cookie
4) 根据cookie获取成员身份,进入相应的页面
cookie在微信客户端中会被保存一段时间,避免了每次获得成员身份的开销。
六. 其它
1) 对相关应用的操作,需要注意创建对应分级管理员。调用API的时候,要使用该分级管理员的Secret
2) 由于菜单有缓存,如果变更了菜单等,可以先取消企业号关注,再添加关注