1,前言
微信企业号与微信公众号的配置流程大同小异(殊途同归)。
2,准备工作
2.1,企业号的申请与域名的申请及备案
企业号(公众号)申请需要提前申请,因为有些东西需要备案,审核啥的;
测试环境/生产环境的域名需要提前准备,无论是个人还是企业应用搭建都需要提前准备,因为域名备案是需要一定时间的;
2.2,域名与企业号(公众号)配置产生联系的地方
2.2.1,网页授权及JS-SDK的域名白名单校验
2.2.2,企业微信授权登录校验
点击上图下方中间的“企业微信授权登录”,跳转到下图,在框起来的部分将对应环境的域名添加上
2.3,菜单的配置
2.3.1,工作台的相关配置
1)子应用跳转
常规情况下,点击子应用,会默认跳转到消息列表页(如下图)
但如果想要点击按钮直接跳转到应用(此时消息列表可以通过首页,点击消息框跳转),则需要先配置工作台应用主页(该主页的配置连接为子应用项目资源的访问路径,例如www.qq.com);同时自定义菜单还是该怎么配怎么配(这一步只是想点击子应用的时候不跳转到消息列表而是直接跳转子应用,所以如果不想如此处理(即还是想按照默认模式,先跳转消息列表,然后在做对应的操作)可以只配置自定义菜单,不去管工作台应用主页这个功能
2)工作台应用的展示(默认是列表模式,下图为选了宫格模式之后的展示)
2.4 微信JS-SDK的使用
2.4.1,JS-SDK的API文档
2.4.2,JS-SDK授权,关于OAuth2.0链接
微信的授权流程是基于OAuth2.0(关于概念可以参考https://www.jianshu.com/p/9d0264d27c3b)的,通常我们在处理第三方授权登录的时候使用的都是静默授权(微信公众号有一个显示授权的概念,而企业号没有这个概念,它只有一个类似静默授权的过程,即授权过程不暴露给用户,用户只能感受到浏览器似乎重定向了一次)
上述授权的流程大致为:
1)给应用配置访问链接,该链接为参考文档-身份验证-构造网页授权链接部分所述的链接
2)用户点击子应用,访问配置的访问链接所指向的地址
3)接第二步,当前地址指向一个授权页,该授权页会根据访问链接上的一些参数(例如appid,即企业的CorpID)返回一个授权令牌code,并将其拼在重定向链接(即访问链接上redirect_uri参数的值)上;然后跳转到重定向链接所指向的地址(该地址即为子应用项目资源目录所在地址
4)从第四步开始,项目资源正式开始访问;在访问资源之前,调用后端给的授权接口(该接口用来接收重定向链接上拼接的code,然后在后台用该code和access_token来跟微信服务器交换目标用户信息,值得一提的是,微信静默授权只能拿到用户的基本信息,同时该信息为企业通讯录里已经维护的用户信息)将重定向链接上拼接的授权令牌code传到后端交换用户的基本信息(在这个过程中实际上是可以将token一并返回,但有时候,部分平台的token实际上是一个封装好的接口来获取的,所以要根据实际情况来处理(但用户信息确是在这一步返回的)
5)token和用户信息可以酌情考虑在会话期间内缓存在本地(虽然这是一句废话,但希望这真是一句赘述)
6)上述过程中的一些注意事项:
a)上述过程中,授权令牌code是有时效限制的,它的失效为5分钟,且在这5分钟之内只能使用一次,也就是说,如果code在请求回来后,如果你在5分钟内没有使用它(或是5分钟内使用过一次之后),当前这个code就自动失效了。
b)后端通过access_token和授权令牌code换去用户信息的时候会出现一些问题,例如40029这个错误,它的含义是授权令牌code错误,网上有指出302跳转会出现重定向问题(https://blog.csdn.net/hhchor/article/details/53450189);但需要说明的是,后端在换取用户信息的时候,拿去交换的参数是有两个;尽管40029这个错误是报的不合法的code,但最后排查了下,发现生成一个错误的access_token,跟code去交换信息的时候,它不会报access_token不合法,而是报code不合法(这波操作简直666)。。。
指出这个问题的意义在于,无论是微信企业号还是微信公众号开发,在实际开发过程中,会出现很多奇奇怪怪的错误,如果排除了可能导致该问题的所有因素,那么即使有多么不可能,也该尝试怀疑一下是不是外部因素导致的。
c)微信jssdk调用初始化过程中需要的三个参数(这三个参数为生产ticket的相关参数,ticket用于生产access_token,而access_token用于跟code一起交换用户数据);建议了解下开发者文档里的JS-SDK使用权限签名算法这一节以及常见错误及解决方法这一节,因为有些参数是需要在后端缓存的,不能频繁调用(频繁调用会被拉黑的哦)
7)微信外部扫一扫(栗子:微信问卷调查)
扫一扫这个操作实质上是微信客户端解析一个二维码拿到一个访问链接(该链接就是上述的授权访问链接),并且当微信判断该二维码的内部信息是一个链接的时候将自动打开一个webview并访问该链接。所以本质上通过扫一扫访问一个应用和点击应用图标访问该应用没什么太大区别。
3,鸣谢
1,感谢https://www.jianshu.com/p/9d0264d27c3b对于OAuth2.0的解释
2,感谢https://blog.csdn.net/hhchor/article/details/53450189对于企业号开发过程中40029错误码的相关解决方案