微信第三方平台
时至今日,,作为第三方平台开发的小程序已经上线有一段时间了,第一次经历整个开发流程。再回首,尝试着从宏观上梳理下『当我们谈微信第三方平台时我们在谈什么』。同样,,不涉及代码级的具体实现。
BTW,关于微信开放平台
顺便聊聊微信开放平台先,,登陆微信开放平台后,进入『管理中心』Tab。我们可以看到页面中有5个二级Tab,分别是『移动应用、网站应用、公众账号、小程序、第三方平台』。OK,微信开放平台,顾名思义,,是将微信体系下的服务接入其他互联网应用的平台。这5个tab代表了目前可以接入的互联网应用类型(准确来说是4个,,第三方平台应该算业务实现类型,不算互联网应用类型。再严谨一点,应该是两种,,web应用和客户端应用,微信公众号和小程序本质上还是客户端应用。再无聊一点,,就只有一种client-server了,笑哭)。
要了解微信开放平台,我们必须深刻理解微信的UnionID机制:
获取用户基本信息(UnionID机制)
在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的。对于不同公众号,同一用户的openid不同)。公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间。
请注意,如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用UnionID机制来满足上述需求。UnionID机制说明:
开发者可通过OpenID来获取用户基本信息。特别需要注意的是,如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。
我们现在代入场景想象下:
- 每个微信用户对『移动应用、web应用、公众号、小程序』都有唯一OpenID;
假如我有个商城卖卖零食什么的,客户遍布各个平台,,这样,让客户在Android、IOS客户端 Web网站 公众号菜单中的商城 小程序分别注册一个账号无疑是反人类的。这时候微信说了,,那你在我的微信开放平台注册个账号,然后把移动客户端 web网站 公众号 小程序什么的统统绑定(开放平台中的创建)到开放平台的这个账号主体上。那么新用户就可以在上述所有应用通过微信授权登陆了,无需注册(当然,登陆功能是实现了,,其实只是从微信那获取了几个无关痛痒的几个基本字段信息,实际操作过成功,一般都会要求用户重新绑定手机号或者邮箱什么的,以及其他用户信息。)~当然,统一微信授权登陆功能只是其中一个场景,还有微信支付接口什么的,具体看文档啦。 - OK,,假设现在所有应用都可以通过微信授权登陆了。那么在获取用户额外信息之前,我们如何将所有应用的用户体系打通呢?换句话说,我们如何判断在移动客户端授权的OpenID A 与 在小程序端(或Web网站、公众号)的OpenID B是同一个现实世界中的同一个用户呢?
这个时候就需要 UnionID 了。当我们把所有端的应用全部绑定在微信开放平台的同一个账号主体上,这时候就可以获取 UnionID 了,因为对同一个微信开放平台下的不同应用,unionid是相同的。即我们可以通过在不同端获取到的 UnionID 进行比对,,如果相同,则为同一个账号主体下的用户。务必注意是同一主体。
开放平台就是这样,说的有些啰嗦了都。。
微信开放平台的第三方平台
之前一直称呼『第三方平台』,也总是困惑第三方平台和开放平台是什么关系。后来在开放平台的『管理中心』Tab找到了答案,,原来一直都没注意。。
第三方平台是干嘛的呢?是为了实现什么???最开始了解『第三方平台』是公司要做小程序,同一个小程序要给很多客户用,类似套用模板一样,,但又怕微信有审核,怕相似度太高不给审核通过什么的(事实证明我想多了。。),然后了解到了『第三方平台』。那个时候对第三平台并不了解,只是看文档,开发接口,实现业务。知其然不知其所以然,,直到有一天小程序开发基本完成,面临上传审核的问题。这个时候,诸多疑问赶到一块儿。其中,又以这两个问题最为棘手,,
- 第三方平台的小程序模板怎么上传?需要审核么??
- 这个全网发布什么鬼?也要审核???
小程序审核发布什么的我基本想得通,像在应用分发平台(各应用市场)上传App一样的道理,,但这个『全网发布』有点太抽象了,,领导问起来,我也有点心虚,只能硬着头皮一点点试。好在领导给力,说 大不了微信不给审核通过,我们再按着未通过理由改呗。其实也看了全网发布接入检测说明,要检查一些文档中的接口是否可用。但是总有一层很模糊的东西没想明白,,Why?后来全网发布检测,一遍过,,
(因为最初是为了发布小程序,所以小程序的接口全部实现了,公众号的接口没怎么做,,因此有两项测试失败,但还是提示检测通过了。)
然后检测通过后,就是等待微信审核(大概两个工作日)。这个时候还是不太确定全网发布是什么鬼,,直到审核通过。审核通过之后,,在上图中原『全网发布』按钮所在的那个 section(就是灰背景色那部分,,不知道怎么形容。。) 中灰字部分,会变成『全网发布的审核已通过,已允许公众号来进行授权托管。』。看到这行小字的时候好像突然明白了,,原来全网发布监测是为了保证基本服务可用(因为access_token获取方式变了,其他接口绝大部分需要通过传递access_token来实现业务)。检测通过之后,就可以面向所有客户(在测试阶段只测试白名单中应用可以使用第三方平台的接口实现业务)。
其实,在第三方平台概述中,已经提到了,,只不过最开始开发的时候,不明所以,就略过了,,
四、第三方平台授权后如何帮助旗下公众平台帐号实现业务
请根据本文档目录中的“代公众号实现业务”文件夹中的相关文档,来了解如何帮助旗下公众号调用接口,实现业务。也可根据本文档目录中的“代小程序实现业务”文件夹中的相关文档,来了解如何帮助旗下小程序帐号调用接口,实现业务。
关键字 -> 『代公众号实现业务』。这几个字就是第三方平台的作用。当然,不光是公众号,还有小程序,,因为公众号业务比小程序实现的要早,文档维护不及时。。
以公众号为例,,公众号的开发首先是面向大众的,有微信公众号后台页面,图形化页面中也可以个性化定制一些功能,比如自定义消息回复什么的。但如果深度定制的话,就需要开发者通过调用微信接口实现了,接口的令牌就是access_token,既可以通过它识别公众号身份,又可以控制请求次数 频率什么的。那第三方平台呢,为了免去为多个客户重复开发相同业务麻烦,一套接口,一个项目实现所有用户的业务(当然,需要参数来区分每个请求属于哪个公众号)。
同理,小程序。
这就是第三方平台存在的价值。客户具体怎么授权第三方平台实现业务,可以授权流程技术说明,也可以参考我之前的博客微信第三方平台小程序爬坑。
另外,公众号或小程序授权给第三方平台时,可以自定义要授权的权限。潜台词就是,将相关权限授权给第三方平台后,那么相应的权限就由第三方平台实现,未授权的权限还是由自己开发开发实现。有些权限是互斥的,有些则是可以同时授权给多个平台的,,比如微信开放平台账号管理权限。其中就有提到,,
小程序只可将此权限集授权给一个第三方平台,即授权互斥。
其余的互斥权限倒没怎么注意到。