微信公众平台应用开发实战(txt+pdf+epub+mobi电子书下载)


发布时间:2020-09-22 21:42:56

点击下载

作者:钟志勇

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

微信公众平台应用开发实战

微信公众平台应用开发实战试读:

前言

为什么要写这本书

微信有超过4亿的用户,其公众平台给了我们一个接触这个庞大用户量的机会,然而,到目前为止,公众账号的数量并不多。微信在公众平台道路上的探索还只是初级阶段,公众平台的使用者也在积极地进行着自己的摸索,目前特别成功的案例还很少。公众平台对于我们来说是一个全新的平台,任何人都可以在公众平台上注册账号,进行自己的探索,这意味着大家的机会都是平等的。和大家一样,我也是众多探索者中的一个。

关于机会,唐骏在他的新书《重新出发》中给出了他的理解:“机会有三种,第一种是别人给的,第二种是争取的,第三种是运作出来的。迂回前进是运作机会的最佳方式之一,对于处于弱势的人来说尤其有效。”也许读者目前对公众平台一无所知,我想从现在开始了解并不晚,也许最好的公众账号就是你将来苦心经营的那个。

我是在今年年初的时候第一次接触到公众平台的,一番了解之后,对它的开发模式非常感兴趣,于是自己开发了一些公众账号,包括本书中将会介绍的meiri10futu、findface和mingyunzuolun。在开发和运营这些账号的过程中记录了遇到的问题和对应的处理方法,本书其实是把整个开发的过程展现给读者,我希望读者能够从中得一些帮助,同时也希望自己通过这本书认识更多对公众平台的开发感兴趣的人。读者对象

❑对公众平台感兴趣的人;

❑有程序开发经验,想尝试微信公众平台开发的人;

❑没有程序开发经验,想入门学习微信公众平台开发的人(本书的准备篇是专门为这类读者准备的);

❑想通过开发一些实际应用提升自己开发能力的人(本书使用到的知识是互联网应用通用的);

❑已经开发了自己的公众账号,想进一步提升的人。如何阅读本书

本书在逻辑上分为四大部分:

第一部分为第1章,简单介绍了微信公众账号的开发模式和相关的技术,包括HTTP、PHP、XML和SQL,帮助读者了解一些基础的背景知识。如果读者已经使用过相关技术并对开发模式有所了解,可以跳过这部分。

第二部分为第2~4章,着重讲解公众平台的开放API,并用这些API实现一个入门的echo server账号。在这一部分,笔者还进一步实现了一套快速开发公众账号的框架,读者使用这个框架可以快速实现自己的公众账号。

第三部分为第5~7章,依次向读者展示三个公众账号(meiri10futu、findface和mingyunzuolun)的开发过程,这三个公众账号分别属于娱乐型、应用型和游戏型。掌握这部分知识之后,读者可以独立完成一个有复杂逻辑的公众账号。

第四部分为第8~9章,介绍了如何处理海量订阅和用户消息、如何防御恶意攻击。这部分意在提高读者能力,同时这部分内容也是运营互联网应用需要重点关注的。这部分给出了一些实用的方法,掌握这些内容,读者将有能力独自运营一个有相当订阅数量的公众账号。

如果读者是公众账号开发的新手,建议至少从第二部分开始阅读,如果读者开发过一些公众账号,可以直接选择自己感兴趣的章节阅读。致谢

首先要感谢腾讯公司的微信团队,是他们创造了这款伟大的软件。

其次要感谢机械工业出版社华章公司的杨福川和孙海亮,感谢你们在我写作过程中提供的支持,因为有了你们的鼓励和帮助,我才能顺利完成全部书稿。

谨以此书献给我亲爱的家人,以及热爱软件开发的朋友们!第1章搭建开发环境和相关技术介绍最近这段时间,在任何时候打开任意一个IT媒体,都能在显著位置看到关于微信公众平台的文章,无论是稍有历史的CSDN、51CTO和ITEYE,还是新兴的36Kr、雷锋网、虎嗅和钛媒体等。这些媒体自己都第一时间在微信上注册了公众账号来做新闻推送,相信不少读者也关注了其中一些。不管这些关于微信公众平台的文章是软文还是“小编”或者网友的文章,由此可以肯定一点:大家对微信公众平台是非常关注的。相信很多人都想基于微信公众平台做一些事情,都呈跃跃欲试状。但是当你阅读这些文章,希望从中学到一些自己需要的知识时却会发现,其中大部分都是谈前途、谈看法,有实际指导性意义的非常少。其实,这也不能怪这些文章的作者,因为他们自己应该也不太清楚要怎么做。新事物出现的时候人们总是这种状态,觉得前途一片光明,但是大部分人不知道从哪里开始迈出第一步。在笔者看来,作为开发者,拥抱变化,并写下关于新事物的第一行代码就是我们的第一步。本章就是为写下第一行代码做的准备工作。本章会先介绍微信公众平台的一些基本概念和公众平台的开发模式;然后讲解如何搭建开发环境—AppServ和zendstudio;然后在部署好的开发环境中讲解PHP的基本语法以及如何使用PHP来操作HTTP、XML和MySQL;最后会介绍一下HTML5。这些知识都是本书中会用到的。计算机这门学科特别强调“实践出真知”。看IT开发的书籍如果不动手实践,大概在看完一个星期之后就只会记得看过这本书而已。对这一点,本人深有体会。所以读者最好是边看边做,这样看完之后也学会了。1.1 微信公众平台简介

2013年1月15日,微信的注册用户突破3亿。这距离微信发布第一个版本的2011年1月21日仅2年的时间。海量的用户蕴藏着巨大的营销和推广价值。2012年8月17日,微信推出了公众平台,为个人和企业带来了一个新的机会。通过这一平台,个人和企业都可以打造一个微信公众账号,并实现和特定群体的文字、图片、语音的全方位沟通、互动。

和企业微博相比,微信公众账号具有如下两个重要特点:

❑微信公众账号更注重私密性。订阅者和公众账号的交流是私密的,不像企业微博那样,所有的粉丝都看得到你的评论和转播。

❑微信公众账号更注重和订阅者的交流,而企业微博更注重信息的传播。

从公众账号和订阅者的交流方式来看,微信公众平台有三大功能:

❑群发消息。公众账号每天可以向订阅者群发一定量的消息。

❑使用编辑模式中的自定义回复消息,公众账号可以自定义一些消息回复规则。

❑使用开发模式,公众账号的维护者可以开发自己独特的业务逻辑来分析订阅者的消息,并反馈给订阅者。这个功能给了公众账号最大的自由度,使用好它可以极大地扩展公众账号的能力。

结合公众平台的特点和功能,公众账号可以有以下使用方法:

❑企业移动门户。订阅者可以通过企业账号获取最新的优惠和活动,例如“好乐迪KTV”、“百果园”、“海岸城”等公众账号都属于这一类。

❑新闻资讯。微信自带的“腾讯新闻”以及“雷锋网”、"36Kr"等都属于这一类。用户订阅这些账号是为了看新闻。

❑娱乐。“糗事百科”、“百思不得姐”以及本书中将要介绍的"meiri10futu"等账号就属于这一类。

❑社交应用。“校园爱情”、“错过的他”等都属于这一类,这类应用还不太成熟,使用起来还不是很方便,主要原因是微信还没有开放获取用户信息的API。本书中的"findface"是这类应用的一个尝试。

❑游戏。这类应用大多是发送一个链接给用户,实际运行还是在浏览器里,没有用到微信公众平台的特性。这种模式被认为是微信公众平台和HTML 5的结合点,“爱屁屁”就是这种类型中的一个。非内嵌连接的游戏还很少,本书中的“命运左轮”是非内嵌链接游戏的一个尝试。

也许大家注意到了,这些账号都很生活化,那些微博中人气非常高的名人不在此列。这让笔者想起了两句非常有意思的话,可以形象地总结出微博和微信的区别:“微博一打开,看到一群公知在忧国忧民,感觉世界好黑暗。微信朋友圈一打开,看到一群朋友在吃喝玩乐,感觉世界好阳光。”读者会发现自己平时遇到的一些账号笔者并没有列出来,这并不奇怪,因为公众账号的使用方式还在不断探索之中。那个最有效,最受欢迎的账号也许会出自你手,谁说得定呢?1.2 公众平台开发模式的数据交互方式

公众平台消息接口为开发者提供了与用户进行消息交互的能力。对于成功接入消息接口的公众账号,当用户发消息给公众账号时,微信公众平台服务器会使用HTTP请求对接入的网址进行消息推送,第三方服务器可通过响应包返回个性的回复,从而达到回复消息的目的。简单地说,就是公众账号可以使用自己的程序来和用户对话。

这个模式和多年前的手机订阅很像。在21世纪初,互联网在泡沫之后迎来了一种非常厉害的盈利模式—SP/CP模式,拯救了水深火热的互联网。当然,现在这种模式已经过时了,大家可以在网上了解一下那段互联网的历史。不过现实中还是存在真实的例子,如果你的手机号是中国移动的,可以参看10086的短信功能;如果你的手机号是中国电信的,可以参看10000的短信功能。笔者的手机号是中国电信的,当笔者想查询自己的套餐使用情况时,即可发送702到10001,10001会立即返回笔者的套餐详细使用情况。大家肯定猜到这条短信不是人工发过来的,而是由后台程序接到702之后查询中国电信自己的用户数据库后发过来的。同样的,中国移动的用户发送"YE"到10086查询余额的功能也是一样的。

使用了开发模式的微信公众账号就会成为一个配备了一些指令规则的账号。在用户关注公众账号,发送对应的指令给公众账号之后可以获得相应的结果。而这些规则的逻辑需要公众账号的开发者根据公众平台的开发规则在后台实现。用户、微信后台和我们需要开发的公众账号后台的服务器三者之间的交互关系如图1-1所示。图 1-1 用户、微信后台和公众账号服务器间的交互图

图1-1所示的具体交互过程的描述如下:

1)用户在微信的手机客户端里向公众账号发送一条消息,这条消息会通过网络到达微信的后台;

2)后台收到这条消息之后,把消息转发给公众账号的后台,也就是公众账号的服务器;

3)公众账号服务器收到请求后,解析消息格式,根据用户内容和自己的服务器逻辑,计算出需要返回给用户的消息,然后封装消息,返回给微信后台;

4)微信后台把公众账号服务发来的消息转发给用户的微信手机客户端,这样用户在手机客户端上就可以看到公众账号发来的微信消息了。

通过这个过程可以看到公众账号服务器要做的事情有三件:

❑获取微信后台发过来的消息;

❑实现自己的业务逻辑;

❑发送返回消息给微信后台。

因为微信服务器请求公众账号服务使用的是HTTP协议,所以在公众账号服务器上必须要运行一个HTTP服务,并打开一个端口。本书的案例为了开发时的方便,使用Windows上的AppServ作为开发和调试环境,使用zendstudio作为PHP语言的IDE,使用Windows版本的MySQL作为数据存储;在部署应用时使用Nginx、PHP-FPM和Linux版本的MySQL作为生产环境。

接下来介绍一下开发环境的准备工作及生产环境的部署,如果读者已经知道如何使用AppServ可以跳过这些内容。1.3 AppServ的安装与配置

AppServ是一个软件集合,包括Apache(HTTP服务器软件)、PHP(网页程序设计语言)、MySQL(数据库管理系统软件)、phpMyAdmin(图形界面的数据库管理软件)四个组成部分,如图1-2所示。AppServ是一个HTTP服务的集成开发环境。AppServ把这些软件集合在一起的目的是使在Windows上部署整套环境变得更简单。图 1-2 AppServ架构图

接下来介绍如何安装AppServ。

1)到AppServ的官网(http://www.appservnetwork.com/)下载AppServ软件。

2)打开下载到的安装文件,单击"Browse"按钮选择安装位置,然后单击"Next"按钮,如图1-3所示。图 1-3 选择安装位置

3)选择需要安装的组件,把四个组建都勾选上,如图1-4所示,然后单击"Next"按钮。图 1-4 勾选需要安装的组件

4)填写HTTP服务器的地址,即127.0.0.1,邮箱地址可以随便写,保持端口号为80,然后单击"Next"按钮,如图1-5所示。图 1-5 配置HTTP服务器的Server Name和端口

注意127.0.0.1是计算机网络本地回环地址(Loopback Address)。网卡在接收到目的地址为127.0.0.1的网络包后会直接将该网络包回送给本地计算机。因此这个地址经常用来做测试。

5)配置MySQL服务器的root密码为一个熟悉的密码,保持字符集为UTF-8,勾选上"Enable InnoDB"选项,然后单击"Next"按钮,如图1-6所示。图 1-6 配置MySQL的密码、字符集和数据引擎

注意InnoDB是MySQL的事务数据库首选引擎,支持ACID事务、行级锁定,自MySQL 5.5起成为MySQL的默认数据库引擎。除了InnoDB外,MySQL还有很多其他的数据库引擎。

❑MyISAM是MySQL 5.5之前的默认数据库引擎,最为常用,它拥有较高的插入、查询速度,但不支持事务。

❑BDB数据库引擎源自Berkeley DB,是除InnoDB外事务型数据库的另一种选择,支持COMMIT和ROLLBACK等其他事务特性。

❑Memory数据库引擎把所有数据置于内存,拥有极高的插入、更新和查询效率。但是它会占用和数据量成正比的内存空间,并且其内容会在MySQL重新启动时丢失。

❑Merge引擎将一定数量的MyISAM表联合成一个整体,在超大规模数据存储时很有用。

❑Archive非常适合存储大量独立作为历史记录的数据,因为它们不经常被读取。Archive拥有高效的插入速度,但其对查询的支持相对较差。

6)等待安装完成,如图1-7所示。图 1-7 等待安装完成

7)安装完成,勾选并启动Apache和MySQL,如图1-8所示。图 1-8 安装完成,启动Apache和MySQL

8)验证AppServ安装是否成功,即在浏览器中输入http://127.0.0.1/index.php,如果出现图1-9所示界面,则表示安装成功。图 1-9 验证AppServ是否安装成功

9)接下来验证phpMyAdmin是否安装成功。首先修改phpMyAdmin的配置,找到AppServ安装目录下的phpMyAdmin文件夹,进入该文件夹,找到如图1-10所示的config.inc.php和config.sample.inc.php两个文件。图 1-10 AppServ安装过程:修改phpMyAdmin配置文件

10)把config.inc.php重命名为config.inc.php.bak,把config.sample.inc.php重命名为config.inc.php,然后打开新的config.inc.ini,设置$cfg['blowfish_secret']为任意的一个字符串,如图1-11所示。图 1-11 修改phpMyAdmin配置

11)修改hosts配置。打开目录C:\Windows\System32\drivers\etc下的文件hosts,确保localhost没有被注释掉,如图1-12所示。因为phpMyAdmin是配置成通过localhost来访问MySQL服务器的,所以要确保localhost是解析到127.0.0.1的。图 1-12 修改hosts配置

12)打开url:http://127.0.0.1/phpMyAdmin/index.php,如图1-13所示。图 1-13 phpMyAdmin登录页面

13)输入之前安装过程中设置的MySQL的用户名root和密码,登录之后进入如图1-14所示的数据库管理页面。图 1-14 phpMyAdmin数据库管理页面

这就是MySQL的网页端管理工具AppServ的安装过程,AppServ几乎可以进行所有可视化的数据库操作。如果你还没有使用过,现在就可以试试它的功能。

最后介绍一下AppServ的安装目录,熟悉安装目录各个文件夹的作用,对稍后的开发有帮助。打开AppServ的安装目录,如图1-15所示。图 1-15 AppServ的安装目录

图1-15所示的是AppServ的安装根目录,其中文件夹Apache2.2是HTTP服务器安装位置;文件夹MySQL和php6分别是MySQL和PHP的安装目录;www目录是存放PHP脚本的目录,也是我们今后需要重点关注的目录。进入www目录,如图1-16所示。图 1-16 www目录

这些文件都是可以通过浏览器来访问的。在验证AppServ是否安装成功时输入的http://127.0.0.1/index.php访问的就是这个目录下的index.php文件。同理,在验证phpMyAdmin安装是否成功时输入的http://127.0.0.1/phpMyAdmin/index.php的就是phpMyAdmin目录下的index.php文件。开发微信公众平台的后台服务就是要在该目录下开发一些PHP脚本,测试完之后把这些脚本部署到可以被微信后台服务器访问到的机器上,也就是有公网IP的服务器上。这个目录下的文件都是PHP文件,可以用文本编辑器打开和编辑。

可能读者此时已经跃跃欲试地想自己写一些PHP脚本了。不过不要这么着急,所谓工欲善其事,必先利其器。下面介绍一个非常好用的查看和编辑PHP脚本的IDE—zendstudio。它支持高亮显示,并有智能语法提示,可以大大提高开发效率。对于IDE,可以说是仁者见仁,智者见智。有的人说要充分利用IDE的一切功能,以提高开发效率;有的人说过度依赖IDE会使人忽略了语言的编译原理,因为编译、链接之类的事情IDE都智能化地做好了。这两种说法都没有错,笔者的建议是,把IDE当作一个写代码的工具,因为IDE的智能语法提示和高亮显示可以提高开发效率,其他的事情还是自己来做会比较好。尽管IDE已经很智能,但是还是会经常犯一些很低级又不易察觉的错误。本书也是只把zendstudio当作一个写代码的工具。大家慢慢就会体会到这么做的好处。1.4 zendstudio的安装与配置

zendstudio是Zend Technologies开发的PHP语言集成开发环境,是一款收费软件,不过试用版本有30天的试用期。可以去Zend Technologies的官网随便下载任意的试用版,因为我们需要的高亮显示和智能提示在每个版本中都有。笔者用的是一个以前下载好的6.1版本。它的安装非常简单,按照安装指引来就可以了。下面简单介绍一下zendstudio的安装过程。

1)打开安装程序,然后单击"Next"按钮,如图1-17所示。图 1-17 打开zendstudio安装程序

2)这里有一个选择安装位置的选项,可以按照自己的喜好选择安装的硬盘位置。然后不停单击"Next"按钮,直到安装结束,最后得到一个如图1-18所示的欢迎页面。图 1-18 zendstudio安装完成的欢迎页面

3)关闭该欢迎页可以看到一个已有的ExampleProject,因为我们不需要这个示例项目,所以删除它。在此项目上右击,在弹出的快捷菜单中选择"delete"选项,在接下来弹出的对话框中勾选"Delete project contents on disk"(删除项目文件)选项,如图1-19所示,然后单击"OK"按钮,完成项目删除。图 1-19 删除ExampleProject

4)接下来我们创建一个测试项目,为学习PHP、HTTP、MySQL、XML做好准备。将项目命名为Test,单击菜单"File",然后选择"new"选项,接着单击"PHP Project"选项,在弹出的新建项目对话框(如图1-20所示)的"Project name"文本框中输入"Test",之后在Contents下取消勾选"Use default"选项,接着单击"Directory"文本框后的"Browse"按钮,定位到AppServ安装目录下的www文件夹,然后再手工输入"\Test"。最后单击"Finish"按钮,完成这个项目的创建。图 1-20 创建Test工程

5)打开AppServ的安装目录下的www文件夹,可以看到一个新的文件夹,其和phpMyAdmin并列,如图1-21所示。图 1-21 新建工程对应的目录

也许大家已经想到了,使用这个文件夹对应的URL就是http://127.0.0.1/Test/,如果向Test文件夹中加入PHP脚本,是可以通过浏览器访问到的。接下来我们在学习PHP、HTTP、MySQL、XML的过程中进一步学习zendstudio的使用。1.5 相关技术介绍1.5.1 PHP

PHP是一种创建动态交互站点的强有力的服务器端脚本语言。PHP语法非常类似于Perl和C。PHP常常搭配Apache(web服务器)一起使用,不过它也支持ISAPI,并且可以运行于Windows的微软IIS平台。

PHP和其他的语言相比,最大的优势是它集成了700多个内建的函数且有非常多的扩展,配合Apache服务器,使得它处理HTTP的请求非常方便。另一方面,它对MySQL的支持也非常好,有很多的访问扩展库。本书会使用一种比较轻量的访问MySQL的扩展mysqli。接下来先介绍一下PHP的基本语法。由于本书的主题是微信公众平台的开发,所以不会详细介绍PHP的语法。如果你有C、C++或者Java等其他语言的开发经验,那么阅读本书的PHP语法介绍之后就可以基本掌握PHP语法了。如果你没有其他语言的开发经验,建议你购买一本专门介绍PHP语法的书籍学习。当然如果你做过PHP的开发,那可以直接跳过本节。

1.PHP的基本语法

PHP的脚本块以"<?php"开始,以“?>”结束。可以把PHP的脚本块放置在文档中的任何位置。当然,在支持简写的服务器上,可以使用“<?”和“?>”来开始和结束脚本块。不过,为了达到最好的兼容性,推荐使用标准形式(<?php),而不是简写形式。下面的代码就是PHP脚本的一个简单应用,其实现的是打印一个简单的字符串:hello world!。

右击Test工程,在弹出的快捷菜单中选择"New"选项,然后选择"PHP File"选项,在弹出的“新建PHP文件”对话框的"File Name"文本框中键入"test.php",单击"Finish"按钮。接着在新建的test.php文件里输入以上代码,并通过Ctrl+S快捷键保存,如图1-22所示。图 1-22 test.php

然后打开浏览器,在地址栏里输入http://127.0.0.1/Test/test.php,浏览器中将显示"hello world!",如图1-23所示。图 1-23 test.php在google Chrome中的运行结果

test.php文件的创建和运行展示了最基本的使用Apache和zendstudio开发和测试PHP脚本的过程:

1)在zendstudio中创建文件,并编写相应的代码。

2)在浏览器中运行脚本,查看脚本输出是否正确。如果代码有语法错误或者出现了异常,浏览器会打印出语法错误提示和抛出的异常描述。

本书中的所有PHP代码都是这样编写并调试的。

PHP的注释和C语言的注释是一致的,用“//”作为单行注释的开始,用“/*”和“*/”包含多行注释,如图1-24所示。图 1-24 单行注释和多行注释

2.PHP的变量

PHP中所有的变量都是以$符号开始的。PHP是一门松散类型的语言,在变量设置中不需要明确声明该变量的数据类型。根据变量被设置的方式,PHP会自动把变量转换为正确的数据类型。在C、C++和Java等强类型的语言中,必须在变量被使用前显式声明它的类型。另外,PHP的变量不需要提前声明,在使用时会被自动声明。在Test中新建一个文件,命名为test2.php,键入以下代码:

上述代码的分析如下:

❑echo"<BR>"是打印一个网页换行符。

❑我们声明了两个变量—$a和$b,因为把$a设置成了5,所以PHP会自动把$a设置成整型变量;同样的,会把$b设置成字符串变量。

❑注意其中的echo"$a,$b"和echo'$a,$b',对应不同的输出。在双引号中变量会自动解析成它的值,而在单引号中,变量不会做任何转义。这和Shell脚本是一致的。

在浏览器中执行http://127.0.0.1/Test/test2.php,结果如图1-25所示。图 1-25 test2.php的执行结果

PHP中有一个非常简便的连接操作符:.(一个英文的句号)。它可以连接字符串,当操作数中有非字符串时,会先转换成字符串,然后再做字符串连接操作。继续上面的例子,我们在上面代码的末尾加入以下代码:

在浏览器中执行修改后的代码,结果如1-26所示。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载