背景
大家最熟悉的微信公众平台体系就是公众号和小程序了。如果需要使用公众号的高级功能,首先想到的就是组建一个开发团队来做这些工作。大多数情况下,公众号运营人员会把这些工作外包出去;但外包之后有个风险:账号的所有权是不能外包的。如果有风险,我可以把外包的工作收回来。
微信公众号系统原生就支持这种“外包”思路,也就是微信第三方平台。公众号可以通过这个系统将公众号的部分功能和权限开放给第三方,对应的文档可以在微信开放平台找到。不同于自家公众号的开发,微信第三方平台的授权体系非常谨慎,我刚接触的时候,被文档里提到的各种东西搞得一头雾水,所以特意把这个过程梳理了一遍,以图表的形式讲解了授权流程,方便查阅。
已经了解授权流程的同学可以直接拉到本文末尾查看完整图,本文按照授权顺序一步步讲解,图中的key或者数据都以颜色标注,一一对应。
希望本文能够对微信第三方平台开发者有所帮助。
授权步骤 第三方平台数据准备
微信第三方平台也是微信开放平台上的一个账号,它还有一个概念,在微信文档中,第三方平台被称为“”。第三方平台需要实现一个用于微信回调的URL,在平台中称之为“授权事件接收URL”(以下简称“通知回调”),在应用详情页进行配置。
不要被名字误导,实际上所有与第三方平台直接相关的事件都将通过此 URL 进行通知。
得到
该过程涉及两个术语:ket 和 en。
微信每隔十分钟会向通知回调发送一次消息,告知第三方平台后台参数ket,第三方平台收到此消息后需要用自己的and信息加上微信推送的and信息,通过微信第三方平台接口从微信平台换取en。
生成授权注册页面的URL
要求公众号点击授权有两种模式,一种是引导公众号主扫码进入授权页面,另一种是点击移动端的链接授权,两种方式和后台类似,本文讲解第一种。
这里其实就两个小步骤:第一步是第三方平台后台向微信请求一个预授权码;第二步就是用这个预授权码组合成一个URL,供公众号主扫描。
关键参数如下(是扫码的URL):
公众账号授权获取授权公众账号
公众号扫码授权后,微信会向通知回调发送消息,除了通知被授权的公众号(简称“”),最重要的是推送一个新的工单字段,此代码与授予权限的公众号绑定:

拉取公众账号信息及授予的权限
这是两个API,比较重要的是拉取公众号授予的权限范围,调用接口“”。除了获取授权范围,最重要的是引入两个新的参数:
两个API的调用图如下:
公众号代刷新业务
上面提到,通过API:可以获取替换公众号时使用的ken,利用这个ken可以替换公众号中用到的调用。
同样这个也是有过期时间的,所以第三方平台在快要过期的时候需要调用API来刷新,使用这个API循环刷新即可:
获取微信JS-SDK
微信JS-SDK接口使用的不是 ,而是所谓的,普通公众号使用它来兑换,第三方平台则使用 en 来兑换:
其实这个接口已经不属于微信第三方应用的范畴了,只是一个通用的微信公众平台接口,不过因为很常用,所以这里还是讲解一下。
授权流程概述
将上述子步骤合并成一个概览如下(图片比较宽,建议在大屏幕上查看或者放大):
图中调用流程的标题即为API名称,可以作为关键字在微信文档中进行搜索。
参考
本文采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行授权。