当前位置:文档之家› 如何进行微信公众号的开发

如何进行微信公众号的开发

目录1 微信公众号开发相关资料 (2)1.1 微信公众号相关技术介绍 (2)1.1.1 微信公众号类型 (2)1.1.2 SAE环境搭建 (3)1.1.3 BAE环境搭建 (4)1.1.4 微信公众平台管理后台 (5)1.2 微信开发者模式 (7)1.2.1 开发者模式 (7)1.2.2 设置开放者程序锁部署的服务器URL地址 (8)1.3 QQ表情的发送与接收 (9)1.3.1 QQ表情代码表 (9)1.3.2 公众帐号向用户发送QQ表情 (13)1.3.3 公众帐号识别用户发送的QQ表情 (14)1.3.4 向用户发送图文消息(也就是回复图文消息) (14)1.4 微信网页授权获取用户基本信息 (15)1.4.1 OAuth2.0 (15)1.4.2 配置授权回调页面域名 (17)1.4.3 微信网页授权 (20)1.5 创建自定义菜单 (26)1.5.1 自定义菜单的基本特性 (26)1.5.2 创建自定义菜单 (30)1微信公众号开发相关技术资料1.1微信公众号相关技术介绍1.1.1微信公众号类型1、微信公众号有三种类型微信公众平台的核心是与用户的互动,在互动中为用户提供服务,在服务中产生价值。

(1)订阅号订阅号为媒体和个人提供一种新的信息传播方式,构建与读者之间更好的沟通与管理模式。

对于媒体和个人,可选用订阅号。

(2)服务号服务号给企业和组织提供更强大的业务服务与用户管理能力,帮助企业快速实现全新的公众号服务平台。

对于企业和组织,可选用服务号。

(3)企业号开发微信推荐选择“服务号”可获取菜单接口等权限,“订阅号”接口权限极低,账号类型选择后无法修改。

服务号每月只能群发4条消息;订阅号每天可发一条,但消息被折叠到订阅者分类中。

2、微信有两大公众平台分别为:开放平台和公众平台。

(1)开放平台针对移动应用开发。

开发者接入微信开放平台后,可以使移动应用支持微信分享、微信收藏和微信支付。

官方网站为:https://。

(2)公众平台接入微信开放平台公众账号开发,提供类似于轻应用的服务。

https://。

本书主要关注公众平台账号开发。

个人可以选择SAE(Sina App Engine)和BAE(Baidu App Engine)等服务器。

1.1.2SAE环境搭建1、SAE(1)SAE介绍Sina App Engine (SAE)是新浪公司()推出的一款云应用引擎,自2009年11月问世后,SAE一直受到开发者的青睐。

到2013年11月止,SAE已经有近40万开发者,共托管了约56万个应用。

一些成熟的软件和框架,如WordPress、CodeIngiter、YII等,都被移植到SAE。

其中WordPress的安装次数已经超过11万,异常火爆。

(2)SAE现在支持多种语言如PHP、Java、Python采用不同技术的开发者都可以使用SAE服务。

除了网页应用,SAE也有移动云平台,可以开发移动应用。

(3)SAE吸引了大量的开发者SAE体现了新浪的一贯作风:一流客服+一流运营,就易用性和稳定性而言,要远远超过其他竞争者。

2、注册账号SAE采用新浪微博账号体系进行登录,所以你需要有一个新浪微博账号或邮箱即可。

进入SAE官网(/),在页面顶部右上角可以看到“注册”链接。

1.1.3BAE环境搭建1、BAEBAE(Baidu App Engine)是百度公司()推出的云应用引擎,支持的语言环境包括PHP、Java、Python、Node.js、static等。

2、进入百度开放云平台(/)3、百度开发者中心/user/reg#app/project1.1.4微信公众平台管理后台1、微信公众平台管理后台界面公众平台提供了编辑模式和开发模式,两种模式互斥,不能同时开启,但可以随时切换。

2、主要的功能菜单项目及功能说明(1)左侧是导航菜单分为功能、管理、服务、统计、设置五个部分。

右上显示新消息、新增人数和总用户数。

右下显示系统公告、公众平台发布的公告和更新说明。

(2)功能包括群发功能和高级功能群发功能可以将文字、语音、图片、视频、图文消息等类型的内容,下发给粉丝,而且人数不限。

群发消息的到达率和阅读量都远高于其他渠道,而且作者能够自由控制推送的时间,能够接受读者的反馈,所以这个功能一开始就得到了广大媒体用户的欢迎,“自媒体”概念也随之产生和流行。

高级功能包括编辑模式和开发模式。

(3)管理分为消息管理、用户管理和素材管理在消息管理中,可以查看最近5天的消息,并能回复用户。

用户管理显示用户列表,能够对用户进行分组、修改备注名、拉黑名单等操作。

素材管理可以上传图片、语音、视频,并可以编辑图文消息。

(4)服务分为服务中心和我的服务服务中心显示所有可申请的服务,而我的服务显示我已经获得的服务。

(5)统计功能分为用户分析、图文分析、消息分析和接口分析其中用户分析可以查看用户增长情况和用户属性;图文分析可以查看群发图文消息的效果,包括送达人数、图文页阅读人数、原文页阅读人数和分享转发人数;消息分析可以查看用户发送的消息的统计情况;接口分析则能查看接口的调用次数、失败率、平均耗时和最大耗时等统计情况,供开发者根据数据改善程序。

(6)设置分为账号信息、公众号安全助手和安全中心账号信息页可以修改头像、登录邮箱和功能介绍,但一个月内只能申请修改一次;可以绑定腾讯微博和设置图片水印,另外还有关联微博认证和微信认证的入口。

公众号安全助手可以绑定个人微信号,绑定后能够通过微信号进行群发,并通过设置安全微信保护来保证公众账号的安全。

安全中心用来设置公众号安全助手的安全保护和安全提醒功能。

1.2微信开发者模式1.2.1开发者模式1、消息处理的规则——微信用户向公众账号发消息并获得回复的数据交换过程当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上。

开发者的URL接收到XML数据后,通常会解析XML、区分消息类型、进行相应处理,把要回复的内容拼装成XML返回给微信服务器。

微信服务器再将消息回复给微信用户。

主要的过程如下:(1)微信用户发消息到微信服务器。

(2)微信服务器将消息进行预处理,区分出消息类型,包括文本消息、图片消息、语音消息、视频消息、地理位置消息和链接消息。

如果公众账号有语音识别接口权限并且开启了语音识别功能,则在语音消息中增加一个语音识别结果的字段。

微信服务器将消息封装为XML数据后,以POST的方式提交给开发服务器。

微信服务器在5秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。

(3)开发服务器接收到微信服务器提交的数据,根据开发者需要进行处理。

如需给用户回复消息,则将回复消息封装为XML数据,返回给微信服务器。

现在支持回复文本消息、图片消息、语音消息、视频消息、音乐消息、图文消息。

如果不需要回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。

(4)微信服务器接收到开发服务器提交的数据后,返回给微信用户。

2、了解所获得的接口权限可以在微信管理后台的“开发者中心”栏中的接口权限表中了解本公众号所获得的接口权限。

订阅号只能使用普通消息接口,通过认证的订阅号还可以使用自定义菜单接口,而通过认证的服务号可以获得几乎所有接口权限。

其中订阅号无法获得“网页授权获取用户基本信息”。

1.2.2设置开放者程序锁部署的服务器URL地址使用url是为了让微信服务器和你的服务器进行通讯对话,从而达到开发模式下自动回复的目的。

而实现这个通讯,必须有相应的程序为你完成这个功能,而这个程序必须已经开发完成并且放置于url路径下面,当你填写完url和token的时候,微信服务器就会和你的服务器下的程序进行一次认证过程,认证通过表明这个服务器是你的并且程序没有问题。

不然随便填个不存在的url或者url下面个没有相应的接口功能,那是通不过的。

1.3QQ表情的发送与接收1.3.1QQ表情代码表1、属于文本消息首先需要明确的是:QQ表情虽然呈现为一张张动态的表情图片,但在微信公众平台的消息接口中却是属于文本消息;也就是说当用户向公众帐号发送QQ表情时,公众帐号后台程序接收到的消息类型MsgType的值为text。

2、QQ表情发送的是文本消息,而呈现出来却是表情图片那么每一个QQ表情图片一定会有与之相对应的表情代码,下面是已经整理好的微信公众帐号中使用的QQ表情代码对照表:上面一共列出了105个QQ表情,每个表情都给出了与之相对应的文字代码与符号代码。

比如,在输入框中输入“[呲牙]”、“/呲牙”和“/::D”这三种代码的作用都是一样的,都是发送呲牙的QQ表情。

1.3.2公众帐号向用户发送QQ表情1、公众帐号也可以用同样的表情代码与用户向公众帐号发送QQ表情一样,在开发模式下,公众帐号也可以用同样的表情代码(文字代码或符号代码)向用户回复QQ表情。

2、相关的实现代码示例if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {// 回复文本消息TextMessage textMessage = new TextMessage();textMessage.setToUserName(fromUserName);textMessage.setFromUserName(toUserName);textMessage.setCreateTime(new Date().getTime());textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);textMessage.setFuncFlag(0);textMessage.setContent("[难过] /难过/::(");// 文本消息对象转换成xml字符串respMessage = MessageUtil.textMessageToXml(textMessage);}上面代码片段的作用是:判断发送的消息类型,如果是文本消息(MsgType=text),则回复三个难过的QQ表情给用户。

可以看出,不管是用户发给公众帐号,还是公众帐号发给用户,都可以使用QQ表情的文字代码(如:[难过] /难过)和符号代码(如/::()。

1.3.3公众帐号识别用户发送的QQ表情1、当用户向公众帐号发送一个QQ表情,在后台程序中接收到的会是什么值向公众帐号发送一个QQ表情,在后台程序中接收到的是QQ表情的符号代码。

1.3.4向用户发送图文消息(也就是回复图文消息)1、在应用图文消息时所应该要注意的问题(1)一定要给图文消息的Url属性赋值不管是单图文,还是多图文,或者是不含图片的图文,都有可能会被用户点击。

相关主题