微信开发之分清公众平台和开放平台、公众号全局凭证和网页授权凭证

微信小程序
0 689

微信开发中的一些概念还是容易混淆,今天浏览了下微信公众平台、微信开放平台的后台和相关文档,算是弄清楚了下面这些东西,至于其他还没弄清楚的,慢慢来嘛,不能一口吃个胖子,不是?

1,微信公众平台(https://mp.weixin.qq.com)和微信开放平台(https://open.weixin.qq.com)

“微信公众平台是运营者通过公众号为微信用户提供资讯和服务的平台”,登录公众平台账号后,可以看到它有一个不错的交互界面。可以提供给公司的运营人员使用,用来发布消息和提供服务。

 

微信公众平台的技术文档地址为:https://mp.weixin.qq.com/wiki,接口域名为:

通用域名(api.weixin.qq.com),使用该域名将访问官方指定就近的接入点;

上海域名(sh.api.weixin.qq.com),使用该域名将访问上海的接入点;

深圳域名(sz.api.weixin.qq.com),使用该域名将访问深圳的接入点;

香港域名(hk.api.weixin.qq.com),使用该域名将访问香港的接入点。

文档对接口的说明:“开发者可以根据自己的服务器部署情况,选择最佳的接入点(延时更低,稳定性更高)。除此之外,可以将其他接入点用作容灾用途,当网络链路发生故障时,可以考虑选择备用接入点来接入。”

参照技术文档中的“入门指引”和各个章节,使用相应的接口也可以自己开发程序实现向微信发布消息等业务功能。

 

 

微信开放平台:是为开发者(程序员)提供的一个平台,在这里你可以将你的公众平台下的公众号(订阅号、服务号)绑定到你的开放平台账号下,从而可以基于订阅号、服务号做更多的开发。公众号中的订阅号接口权限是有限的,比如它无法获得网页授权的权限,也就无法通过网页授权获取用户的基本信息(比如openID、unionID等)。

 

另外,更多的开发场景可能是这样:公司A拥有1个订阅号用来发送资讯,1个服务号用来为用户提供一些服务(比如查询资料等),还有1个pc端的网站。那么当用户使用这些订阅号、服务号和网站时,公司A的开发人员如何识别用户身份(确认用户身份的唯一性)。微信公众平台的技术文档“开始开发”--“接入指南”已经对此进行了说明:

“由于开发者经常有需在多个平台(移动应用、网站、公众帐号)之间共通用户帐号,统一帐号体系的需求,微信开放平台(open.weixin.qq.com)提供了UnionID机制。开发者可通过OpenID来获取用户基本信息,而如果开发者拥有多个应用(移动应用、网站应用和公众帐号,公众帐号只有在被绑定到微信开放平台帐号下后,才会获取UnionID),可通过获取用户基本信息中的UnionID来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的UnionID是唯一的。换句话说,同一用户,对同一个微信开放平台帐号下的不同应用,UnionID是相同的。详情请在微信开放平台的资源中心-移动应用开发-微信登录-授权关系接口调用指引-获取用户个人信息(UnionID机制)中查看。”

 

 

 

2,公众号全局凭证(全局唯一调用凭证)access_token和网页开发中的网页授权access_token

两者不是一个东西,但在调用接口时很容易混淆。简单来说,网页授权token只在微信授权网页登录时会用到,其他业务一般不会用到,而公众号全局凭证的应用范围则比较广。

公众号的全局凭证access_token获取方法:使用公众号的AppID和AppSecret调用获取access_token的接口,AppID和AppSecret可以在可在微信公众平台官网-开发页中获得,接口调用地址和请求方式如下:

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

参数说明:

复制代码

1 参数说明
2 
3 参数           是否必须     说明
4 grant_type      是       获取access_token填写client_credential
5 appid           是       第三方用户(公众号)唯一凭证
6 secret          是       第三方用户(公众号)唯一凭证密钥,即appsecret

复制代码

 返回数据说明:

复制代码

1 正常情况下,微信会返回下述JSON数据包给公众号:
2 {"access_token":"ACCESS_TOKEN","expires_in":7200}
3 
4 参数    说明
5 access_token    获取到的凭证
6 expires_in    凭证有效时间,单位:秒
7 
8 错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):
9 {"errcode":40013,"errmsg":"invalid appid"}

复制代码

 

网页开发主要实现的一个业务逻辑就是为用户提供微信扫码登录网站功能(或用户使用手机在微信浏览器中打开网站登录),那么这里就涉及到了微信授权给第三方(网页开发者)获取用户基本信息的问题。

网页授权access_token获得方法:先让用户同意授权获取code,然后通过code换取网页授权access_token,具体可参考:微信公众平台技术文档--网页开发--微信网页授权一节或我之前写的这篇文章:网站实现微信登录之回调函数中登录逻辑的处理--基于yii2开发的描述,获取access_token后才能够继续调用其他接口进行其他操作。

 

参考:

微信公众平台技术文档

微信开放平台技术文档