发表于2024-12-26
腾讯公司资深软件研发工程师兼微信公众平台应用开发先驱者撰写,第一版广获好评。
根据微信新版本全新升级,新增内容超过40%,详细讲解所有基础接口、9大高级接口以及公众平台的各种高级功能,逐步讲解微信公众平台开发的流程、方法和技巧。
通过3个案例呈现娱乐型、应用型、游戏型应用的完整开发过程,包含一个快速开发公众平台应用的可复用框架。
《微信公众平台应用开发实战(第2版)》的第1版上市后广获好评,成为计算机领域的热销书,被誉为“微信公众平台开发领域好的书之一”,作者是来自腾讯官方的资深软件开发工程师,而且是微信公众平台应用开发领域的先驱者之一。第2版根据微信的全新版本做了全面升级,新增内容超过40%,同时对其他内容做了更新。内容全面,介绍了微信公众平台应用开发所需各项技术,详细讲解了所有基础接口、9大高级接口以及公众平台的各种高级功能,演示和总结了微信公众平台开发的流程、方法和技巧;实战性强,不仅通过3个案例呈现了娱乐型、应用型、游戏型应用的完整开发过程,而且还实现了一个快速开发公众平台应用的框架,读者可以直接用于快速开发自己的公众平台应用。此外,还从如何应对海量用户请求和用户的恶意请求的角度探讨了公众账号运营所涉及的技术难题。
钟志勇,腾讯资深软件研发工程师,毕业于中科院计算所,微信公众平台应用开发先驱,有多款应用开发经验。在腾讯(深圳)云平台部工作,担任后台开发工程师,参与过腾讯QCLOUD的研发。精通PHP和Linux网络编程技术,实践经验丰富。
前言
第1章 微信公众平台介绍 / 1
1.1 微信公众账号的注册 / 2
1.1.1 基本信息 / 3
1.1.2 邮箱激活 / 3
1.1.3 信息登记 / 5
1.1.4 完善公众账号信息 / 10
1.2 微信公众账号的认证 / 10
1.3 编辑模式 / 13
1.3.1 自动回复 / 13
1.3.2 自定义菜单 / 18
1.4 开发模式简介 / 21
1.5 小结 / 23
第2章 使用云平台快速搭建公众账号 / 24
2.1 开启公众账号开发模式 / 24
2.2 使用新浪SAE搭建公众账号 / 25
2.2.1 注册新浪SAE / 25
2.2.2 在新浪SAE上创建App / 27
2.2.3 部署代码 / 29
2.2.4 开发接口的认证 / 29
2.2.5 实现简单的回复 / 31
2.3 使用百度BAE搭建公众账号 / 33
2.3.1 注册百度BAE / 33
2.3.2 在百度BAE上创建App / 35
2.3.3 部署代码 / 37
2.3.4 开发者接口的认证 / 39
2.3.5 实现简单的回复 / 41
2.3.6 BAE代码下载 / 42
2.4 在PC端进行开发调试 / 43
2.5 小结 / 44
第3章 微信公众平台API详解:基础接口 / 45
3.1 Token验证 / 45
3.2 接收消息 / 46
3.2.1 文本消息 / 46
3.2.2 图片消息 / 51
3.2.3 地理消息 / 53
3.2.4 语音消息 / 56
3.2.5 视频消息 / 57
3.2.6 链接消息 / 59
3.2.7 事件消息 / 61
3.3 回复消息 / 62
3.3.1 文本消息 / 62
3.3.2 图片消息 / 64
3.3.3 语音消息 / 66
3.3.4 音乐消息 / 67
3.3.5 视频消息 / 69
3.3.6 图文消息 / 71
3.4 小结 / 75
第4章 微信公众平台API详解:高级开发 / 76
4.1 会话界面自定义菜单 / 76
4.1.1 获取access_token凭证 / 76
4.1.2 自定义菜单创建 / 78
4.1.3 自定义菜单事件 / 82
4.1.4 自定义菜单获取 / 84
4.1.5 自定义菜单删除 / 85
4.1.6 各接口的调用频次限制 / 85
4.2 语音识别开发 / 86
4.3 自动获取用户地理位置信息 / 88
4.4 用户管理 / 91
4.4.1 查询分组 / 91
4.4.2 创建分组 / 93
4.4.3 修改分组名 / 94
4.4.4 获取关注者列表 / 95
4.4.5 获取用户基本信息 / 96
4.4.6 移动用户分组 / 97
4.5 上传/下载多媒体文件 / 98
4.5.1 上传多媒体文件 / 98
4.5.2 下载多媒体文件 / 100
4.6 客服接口 / 101
4.6.1 推送文本消息 / 101
4.6.2 推送图片消息 / 102
4.6.3 推送语音消息 / 104
4.6.4 推送视频消息 / 105
4.6.5 推送音乐消息 / 107
4.6.6 推送图文消息 / 109
4.7 二维码开发 / 111
4.7.1 创建二维码ticket / 111
4.7.2 通过ticket换取二维码 / 112
4.7.3 扫描带参数二维码事件 / 114
4.8 网页授权获取用户的基本信息(OAuth2.0) / 117
4.8.1 设置授权回调域名 / 117
4.8.2 微信用户同意授权并获取code / 119
4.8.3 通过code换取网页授权access_token / 121
4.8.4 刷新access_token / 123
4.8.5 拉取用户信息 / 125
4.8.6 完整的示例代码 / 126
4.9 wechat的JS开发 / 129
4.9.1 隐藏/显示微信中网页右上角按钮 / 129
4.9.2 隐藏/显示微信中网页底部导航栏 / 130
4.9.3 网页获取网络状态判断 / 131
4.9.4 网页内容分享开发 / 132
4.9.5 完整的示例代码 / 136
4.10 小结 / 138
第5章 搭建开发环境和相关技术介绍 / 139
5.1 AppServ的安装与配置 / 139
5.2 zendstudio的安装与配置 / 144
5.3 相关技术介绍 / 147
5.3.1 PHP / 147
5.3.2 HTTP / 158
5.3.3 XML / 162
5.3.4 MySQL / 163
5.3.5 HTML 5 / 166
5.4 小结 / 169
第6章 开发你的第一个应用——echo server / 170
6.1 实现网址接入 / 170
6.2 解析用户输入并组装返回 / 173
6.3 错误处理 / 175
6.4 封装代码 / 177
6.4.1 日志封装 / 178
6.4.2 一个简单的框架 / 182
6.4.3 数据库访问封装 / 187
6.5 小结 / 200
第7章 带自定义菜单的echo server / 201
7.1 在编辑模式中使用自定义菜单 / 201
7.2 使用CURL发送HTTP请求 / 204
7.2.1 使用CURL发送请求的基本流程 / 204
7.2.2 获取CURL请求的输出信息 / 205
7.2.3 使用CURL发送GET请求 / 206
7.2.4 使用CURL发送POST请求 / 207
7.2.5 使用CURL上传文件 / 208
7.3 获取access_token / 210
7.4 自定义菜单的操作 / 212
7.5 带自定义菜单的echo server / 219
7.6 小结 / 222
第8章 实战案例1:娱乐性图片应用——“每日十幅图” / 223
8.1 需求和交互描述 / 223
8.2 技术方案 / 226
8.2.1 为什么使用问号 / 226
8.2.2 为什么使用图文消息 / 226
8.2.3 表设计 / 226
8.2.4 批量重命名 / 227
8.3 代码实现 / 228
8.3.1 常量定义 / 228
8.3.2 成员变量和初始化 / 229
8.3.3 主业务逻辑 / 230
8.3.4 总代码清单 / 235
8.4 小结 / 239
第9章 实战案例2:人脸识别应用——findface / 240
9.1 需求和交互描述 / 240
9.2 人脸识别基本概念 / 241
9.3 人脸识别OPENAPI / 242
9.4 数据库表设计 / 243
9.5 后台逻辑设计 / 244
9.6 代码实现 / 246
9.6.1 配置定义部分 / 246
9.6.2 Face++接口封装部分 / 247
9.6.3 Group的创建和训练 / 249
9.6.4 findface主逻辑 / 250
9.7 把照片保存到本地 / 252
9.8 小结 / 255
第10章 实战案例3:趣味游戏——命运左轮 / 256
10.1 游戏过程 / 256
10.2 数据表设计 / 258
10.3 自定菜单设计 / 260
10.4 具体代码实现 / 262
10.4.1 AbstractInterface.php / 265
10.4.2 WeChatCallBackMYZL.php / 268
10.4.3 Ready.php / 273
10.4.4 Start.php / 275
10.4.5 ChipIn.php / 278
10.4.6 PutMagic.php / 283
10.4.7 Shoot.php / 289
10.4.8 GetOp.php / 296
10.4.9 AddUser.php / 298
10.4.10 Matcher.php / 300
10.5 运行截图 / 301
10.6 小结 / 301
第11章 海量请求的应对方法 / 302
11.1 影响公众账号的响应速度的因素 / 302
11.1.1 网络时延 / 302
11.1.2 请求处理时间 / 303
11.2 使用高性能的Web组件 / 303
11.2.1 安装 / 304
11.2.2 配置和运行 / 304
11.2.3 ab测试 / 308
11.3 监控服务器的各项指标 / 310
11.3.1 top命令 / 311
11.3.2 vmstat和sar命令 / 312
11.3.3 netstat命令 / 313
11.3.4 Nmon监控 / 313
11.4 使用缓存系统 / 314
11.4.1 Redis简介 / 314
11.4.2 Redis的使用和性能对比 / 315
11.5 数据库的备份和扩展 / 320
11.5.1 主从复制和读写分离 / 320
11.5.2 数据库的垂直划分和水平划分 / 322
11.6 接入层反向代理 / 325
11.7 小结 / 328
第12章 恶意请求的应对方法 / 329
12.1 URL访问限制 / 329
12.2 防止SQL注入 / 332
12.3 用户输入导致XML格式错误 / 335
12.4 PHP安全 / 337
12.5 DDOS简介 / 339
12.5.1 SYN flood / 339
12.5.2 应用层DDOS / 340
12.5.3 ReDOS / 341
12.6 小结 / 344
附录A 返回码说明 / 345
第1章
微信公众平台介绍
最近这段时间,在任何时候打开任意一个IT媒体,都能在显著位置看到关于微信公众平台的文章,无论是稍有历史的CSDN、51CTO和ITEYE,还是新兴的36Kr、雷锋网、虎嗅和钛媒体等。这些媒体都第一时间在微信上注册了公众账号进行新闻推送,相信不少读者也关注了一些。不管这些关于微信公众平台的文章是软文还是“小编”或网友所写的文章,可以肯定的一点是,微信公众平台是非常引人关注的。相信很多人都想基于公众平台做一些事情,都呈跃跃欲试状。但是当你阅读这些文章,希望从中学到一些自己需要的知识时却会发现,其中大部分都是谈前途、谈看法,有实际指导性意义的非常少。这也不能怪这些文章的作者,因为他们自己应该也不太清楚要怎么做。新事物出现的时候人们总是这种状态,觉得前途一片光明,但是大部分人不知道从哪里走出第一步。在笔者看来,作为开发者,拥抱变化,并写下关于新事物的第一行代码就是我们的第一步。本章是为写下第一行代码做的准备工作。
2013年10月24日,微信的注册用户突破6亿,日活跃用户1亿。这距离微信发布第一个版本的2011年1月21日仅有不到2年的时间。海量的用户蕴藏着巨大的营销和推广价值。2012年8月17日,微信推出了公众平台,为个人和企业带来了一个新的机会。通过这一平台,个人和企业都可以打造一个微信公众账号,并实现和特定群体的文字、图片、语音的全方位沟通、互动。
和企业微博相比,微信公众账号具有如下两个重要特点:
微信公众账号更注重私密性。订阅者和公众账号的交流是私密的,不像企业微博那样,所有的粉丝都看得到你的评论和转播。
微信公众账号更注重和订阅者的交流,而企业微博更注重信息的传播。
从公众账号和订阅者交流方式的角度来看,微信公众平台有三大功能:
群发消息。公众账号每天可以向订阅者群发一定量的消息。
使用编辑模式中的自定义回复消息功能,公众账号可以自定义一些消息回复规则。
使用开发模式,公众账号的维护者可以开发自己独特的业务逻辑来分析订阅者的消息,并反馈给订阅者。这个功能给了公众账号最大的自由度,可以极大地扩展公众账号的能力。
结合公众平台的特点和功能,公众账号可以有以下使用方法:
企业移动门户。订阅者可以通过企业账号获取最新的优惠和活动,例如“好乐迪KTV”、“百果园”、“海岸城”等公众账号都属于这一类。
新闻资讯。微信自带的“腾讯新闻”以及“雷锋网”、“36Kr”等都属于这一类。用户订阅这些账号是为了看新闻。
娱乐。“糗事百科”、“百思不得姐”以及本书中将要介绍的“meiri10futu”账号就属于这一类。
社交应用。“校园爱情”、“错过的他”属于这一类,这类应用都还不太成熟,使用起来还不是很方便。主要原因是微信还没有开放获取用户信息的API。本书中的“findface”是这类应用的一个尝试。
游戏。这类应用大多是发送一个链接给用户,实际运行还是在浏览器中,没有用到微信公众平台的特性。这种模式被认为是微信公众平台和HTML 5的结合点。“爱屁屁”就是这种类型中的一个。非内嵌连接的游戏还很少,本书中的“命运左轮”是非内嵌链接游戏的一个尝试。
也许大家注意到了,这些账号都很生活化。那些微博中人气非常高的名人不在此列。这让我想起了两句非常有意思的话,可以形象地总结出微博和微信的区别:“微博一打开,看到一群公知在忧国忧民,感觉世界好黑暗。微信朋友圈一打开,看到一群朋友在吃喝玩乐,感觉世界好阳光。”也许读者会发现自己平时遇到的一些账号在这里都没有列出来,这并不奇怪,因为公众账号的使用方式还在不断探索之中。也许那个最有效,最受欢迎的公众账号会出自你手,谁说得准呢?
本章是一个介绍性的章节,会覆盖微信公众账号的注册、认证,编辑模式中自动回复和自定义菜单的使用。如果读者已经了解了这些知识,可以直接跳过本章。
……
为什么要写这本书
截至本书完成时,微信已有超过6亿的用户,公众平台给了我们接触这6亿用户的机会。公众平台对于我们来说是一个全新的平台,任何人都可以在公众平台上注册一个账号并进行自己的探索,这意味着大家的机会都是平等的。和大家一样,笔者也是众多探索者中的一个。在本书的第1版完成时,公众平台只开放了一些非常简单的接口,给到开发者的自由度很有限。截至目前,公众平台不仅开放了9大高级接口,还开放了支付接口,可以支持到闭环的用户体验。
关于机会,唐骏在新书《重新出发》中给出了他的理解:“机会有三种,第一种是别人给的,第二种是争取的,第三种是运作出来的。迂回前进是运作机会的最佳方式之一,对于处在弱势态势下的人来说尤其有效。”也许读者目前对公众平台一无所知,但现在开始并不晚,也许最好的那个公众账号就是你将来苦心经营的那个。
笔者是在2013年年初的时候第一次接触到公众平台的,一番了解之后,对它的开发模式非常感兴趣,于是自己开发了一些公众账号,包括本书中将会介绍的meiri10futu、findface和mingyunzuolun。在开发和运营这些账号的过程中记录了遇到的问题和相应的处理方法,本书其实是把笔者的开发过程展现给读者,希望读者能够从中得一些帮助,同时也希望通过本书认识更多的同样对公众平台开发感兴趣的人。
读者对象
对微信公众平台感兴趣的人;
有程序开发经验,想尝试微信公众平台开发的人;
没有程序开发经验,想入门微信公众平台开发的人,本书的第1~2 章是专门为这类读者准备的;
想通过开发一些实际应用提升自己开发能力的人,本书用到的知识都是开发互联网应用通用的;
已经开发了自己的公众账号,想进一步提升的人。
如何阅读本书
本书分为四大部分:
第一部分为第1~2章,介绍了微信公众平台的一些基本概念和操作方法,并通过BAE和SAE,介绍如何通过云平台使用公众账号的开发模式。这一部分相对简单,可以照顾到开发基础薄弱的初学者。
第二部分为第3~7章,着重讲解了公众平台的基础接口、高级接口以及开发中需要用到的技术(HTTP、PHP、XML和SQL等),帮助读者了解一些基础的背景知识。然后使用接口和相关技术实现一个入门的echo server账号。在这部分,笔者还进一步实现了一套快速开发公众账号的框架,读者使用这个框架可以快速实现自己的公众账号。
第三部分为第8~10章,依次向读者展示了三个公众账号(meiri10futu、findface和mingyunzuolun)的开发过程,这三个公众账号分别属于娱乐型、应用型和游戏型。掌握这部分知识之后,读者可以独立实现一个有复杂逻辑的公众账号。
第四部分为第11~12章,介绍了如何处理海量订阅和用户消息、如何防御恶意攻击。这部分意在提高读者多方面的能力,这部分内容是运营互联网应用需要重点关注的。这部分给出了一些实用的方法,掌握这些方法,读者将有能力独自运营一个有相当订阅数量的公众账号。
如果读者是公众账号开发的新手,建议从第一部分开始阅读,如果读者开发过一些公众账号,可以直接选择自己感兴趣的章节阅读。
第2版和第1版的比较
第2版不但新增了微信公众平台9大高级接口的详细介绍和示例代码,而且增加了基本接口的示例代码(这部分放在了第3章和第4章)。另外,一些第1版的读者反映,对代码理解有困难,开发上手有难度,为了照顾到这部分读者,尽量使没有程序开发经验的读者也可以享受开发公众账号的乐趣,笔者特意新增了对微信公众平台开发模式基本概念的介绍和如何使用BAE
微信公众平台应用开发实战(第2版) 下载 mobi epub pdf txt 电子书 格式
微信公众平台应用开发实战(第2版) 下载 mobi pdf epub txt 电子书 格式 2024
微信公众平台应用开发实战(第2版) 下载 mobi epub pdf 电子书书还行,不过不提供代码。
评分书中自有黄金屋,货收到谢谢,不错,先看看!!
评分书还行,不过不提供代码。
评分打算暑假在公众号里玩一玩,有可能有收获
评分还没看,不过我想腾讯里面供职的人编写的,应该不会差到哪儿去吧。
评分还没看,不过我想腾讯里面供职的人编写的,应该不会差到哪儿去吧。
评分经典内容虽然不多,但是能学到东西就好。
评分微信平台提供的功能已经超越本书。感觉不适用了。
评分有些用处 参考效果 y?z?z?y?z?y
微信公众平台应用开发实战(第2版) mobi epub pdf txt 电子书 格式下载 2024