[044] 微信公众平台开发教程第20篇-新手解惑40则

简介:

笔者在CSDN博客频道推出微信公众平台开发教程之后,接触了很多公众平台开发爱好者,也帮助他们攻克了很多实际的问题,当然这当中有非常多问题都是反复的,因此,笔者将这些问题及解答整理出来,以帮助许多其他刚开始学习的人少走弯路。

 

1、订阅号与服务号的主要差别是什么?
订阅号每天能群发一条消息,沒有自己定义菜单及高级接口权限;服务号有自己定义菜单及高级接口权限,但每月仅仅能群发一条消息。

 

2、究竟该申请订阅号还是服务号?
申请哪种类型的公众账号,主要取决于账号的用途。服务号主要面向企业和组织,旨在为用户提供服务;订阅号主要面向媒体和个人,旨在为用户提供信息和资讯。

3、订阅号是否支持编程开发?
无论是订阅号,还是服务号,在高级功能中都有编辑模式和开发模式,订阅号也支持编程开发,相同也能与企业系统对接。

 

4、为什么申请的公众账号沒有高级功能?

公众账号注冊后,要经过微信团队的审核,在审核未完成之前不显示高级功能。一般审核会在15个工作日内完成,假设一两周没审核通过均属正常现象,还请耐心等待。

5、如今订阅号是否能申请自己定义菜单?
不能。那为什么有些订阅号有自己定义菜单?这是历史遗留问题。2013年8月5日,随着微信5.0的公布,公众账号被划分为订阅号和服务号,全部的公众账号都被默觉得订阅号,而且有一次转服务号的机会,很多在此之前申请到自己定义菜单的账号并沒有转为服务号,所以就存在一些订阅号有自己定义菜单,比如:36氪、蓉城先锋、天府之光等。

补充:2013年12月24日,公众平台针对订阅号做了重要更新。政府、传统媒体、明星等非企业性质的订阅号能够申请微信认证,通过微信认证的订阅号可获得自己定义菜单接口权限。

 

6、如今申请的订阅号是否能转服务号?

 

不能。唯独2013年8月5日微信5.0公布曾经申请的订阅号才有一次转服务号的机会,在此之后申请的订阅号不能转服务号。

那假设真的有转服务号的需求怎么解决?仅仅能又一次申请一个服务号。


7、眼下一个身份证号能申请几个公众账号?

2个。

 

8、使用一个公司的材料能申请多少个公众账号?
沒有限制。

 

9、在注冊公众账号时,提示“你注冊的公众号名称存在侵权风险,请先完成微博验证”,这是什么意思?

公众平台对一些可能存在侵权的关键词进行了保护,比如:“微信”、“移动”、“搜狐”等,假设注冊的公众账号名称中包括这类关键词,提交时就会提示存在侵权风险。

遇到这样的情况时,要么避开这些关键词换个名称注冊,要么就依据提示先完成微博验证再继续注冊。

 

10、个人是否能申请服务号?

不能,个人仅仅能申请订阅号。服务号的运营主体必须为组织,比如:企业、政府、其它组织等。

 

11、公众账号的名称能够反复吗?
公众账号的名称能够反复,不用操心被他人抢注。

 

12、公众账号的名称能够改动吗?
公众账号名称一经设置无法改动,公众平台沒有提供账号改名的功能,因此在注冊账号时取名应慎重。

 

13、微信认证与微博认证有什么差别?

微信认证是针对于服务号,微博认证是针对于订阅号。也就是说,订阅号仅仅能申请微博认证,服务号仅仅能申请微信认证。

 

14、是否须要粉丝数达到500才干申请微信认证?

仅仅要是服务号都能够申请微信认证,与粉丝数无关。唯独订阅号申请微博认证才要求粉丝数必须达到500。

 

15、编辑模式与开发模式能够同一时候使用吗?

不能,这两种模式是相互排斥的,开启编辑模式就必须关闭开发模式,开启开发模式就必须关闭编辑模式。

 

16、如今用的是编辑模式,以后还能够选择使用开发模式吗?

能够,不论什么时候都能够依据须要切换到第二种模式。

 

17、编辑模式切换到开发模式之后,在编辑模式中设置的内容还在吗?还有效吗?

在编辑模式中设置的内容,仅仅要自己不手动删除,会永远存在的,但这些设置在开发模式下无效。

 

18、开发模式的菜单为什么突然消失了?

菜单不会无缘无故的消失,假设开发人员沒有手动删除,那一定是有人开启过编辑模式引起的。请注意:开启编辑模式后,在开发模式下创建的菜单会被删除。


19、使用开发模式须要具备哪些条件?

1)至少掌握一门编程语言;2)具备公网server资源。

 

20、微信公众平台支持哪些编程语言?应该怎样选择?

凡是支持动态Web开发的编程语言都能够用于微信公众平台开发,比如:Java、PHP、ASP.NET、Ruby、Python、Note.js等。

开者人员应该选择自己最擅长的编程语言进行开发,假设都不擅长怎么办?假设都不擅长,建议选择Java或PHP,原因在于网上关于微信公众平台开发的资料大都是基于Java和PHP的,开发起来要相对easy。

 

21、沒有公网server资源怎么办?

1)免费:能够考虑使用云环境,比如,BAE(Baidu App Engine,百度应用引擎)和SAE(Sina App Engine,新浪应用引擎)。

2)付费:能够考虑租用VPS(Virtual Private Server,虚拟专用server)或阿里云的云server。

假设仅是为了学习微信公众平台开发,个人建议使用BAE。

 

22、假设想使用Java进行微信公众平台开发至少须要掌握哪些内容?

至少须要掌握Java基础知识、JSP、Servlet、Javabean和JDBC(操作数据库)。

 

23、公司的项目大都是基于SSH框架进行开发,能使用SSH开发微信公众账号吗?

当然能够,前面说过,凡是支持动态Web开发的编程语言都能用于微信公众平台开发。事实上,Struts本质上也是Servlet。

 

24、柳峰老师,能够给我一份微信公众平台项目的源代码吗?

想要源代码的朋友请您免开尊口,我觉得这不是一种非常好的学习方式和态度,而是一种浮躁的表现。博客中的教程已经讲的非常具体了,而且贴出了全部代码(一行也不少),假设这样还不愿意花点时间去理解、消化和动动手,我也无能为力!

PS:曾经也有一些开发人员、创业团队和公司提出要买小q机器人(xiaoqrobot)的源代码,有的开价是5位数,但都被我拒绝了。相比之下,我更愿意把小q机器人的完整实现过程写成一篇篇技术文章免费分享出来,带动许多其他的开发人员添加到微信公众平台开发阵营!

 

25、公众账号能够通过程序主动向关注用户发消息吗?

截止眼下,公众平台还沒有开放主动向用户发消息的接口。为什么招行能够?我前面说的是沒有“开放”主动发消息的接口,并不代表沒有该接口。假设贵公司也有招行的实力,我相信你也有办法申请到;假设沒有这样的实力,那就不要费事了。

 

26、订阅号使用开发模式能够向用户回复图片、语音和视频消息吗?

能够,尽管订阅号沒有多媒体文件上传接口权限,无法通过上传多媒体文件到微信server获取MediaId,但仍能够变相得到MediaId,相同能够实现回复多媒体消息。变相的实现方法是将用户发送给公众账号的多媒体消息的MediaId记录下来,给用户回复多媒体消息时能够使用。

 

27、订阅号使用开发模式能够向用户回复音乐消息吗?

能够。

 

28、音乐消息包括參数ThumbMediaId,沒有高级接口权限的公众账号无法获得ThumbMediaId,怎么回复音乐消息?

ThumbMediaId不是音乐消息的必须參数,给用户回复音乐消息时能够不传ThumbMediaId參数,相似下面这样的演示例子格式也能正确回复音乐消息:

 

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. <xml>  
  2.     <ToUserName><![CDATA[toUser]]></ToUserName>  
  3.     <FromUserName><![CDATA[fromUser]]></FromUserName>  
  4.     <CreateTime>12345678</CreateTime>  
  5.     <MsgType><![CDATA[music]]></MsgType>  
  6.     <Music>  
  7.         <Title><![CDATA[TITLE]]></Title>  
  8.         <Description><![CDATA[DESCRIPTION]]></Description>  
  9.         <MusicUrl><![CDATA[MUSIC_Url]]></MusicUrl>  
  10.         <HQMusicUrl><![CDATA[HQ_MUSIC_Url]]></HQMusicUrl>  
  11.     </Music>  
  12. </xml>  

 

 

29、订阅号与非微信认证的服务号能够向回复哪些类型的消息?

在开发模式下,订阅号与非微信认证的服务号仅仅能向用户回复文本消息、音乐消息和图文消息。

 

30、为什么项目代码与柳峰老师教程中的一样,发消息给公众账号却沒有不论什么响应?

这是我写微信公众平台开发教程以来,刚开始学习的人给我反馈最多的问题。能够肯定的是,至今为止,我博客中贴出的全部代码全部都能正常执行,沒有不论什么问题。遇到上面这样的问题大都是由下面三种情况引起:

1)在公众平台开发模式下,成为开发人员却忘记开启开发模式,即开发模式的开关是关闭状态。

2)通过上传WAR包的方式部署应用时,导出的WAR包中沒有包括JAR。建议刚开始学习的人直接将项目须要的JAR复制到项目中,这样通过开发工具导出的WAR包就会包括JAR。

3)项目中引入的第三方JAR包与笔者教程中使用的JAR包版本号不一致。

 

31、为什么自己定义菜单创建成功了,在微信client的公众账号上却不显示?

因为微信client缓存的原因,自己定义菜单创建成功后,须要24小时以后才干显示出来。开发人员在測试时,能够尝试取消关注公众账号后再次关注,这样能马上看到最新的菜单效果。

PS:菜单更新、菜单删除也会有缓存。

 

32、假设要更新公众账号的自己定义菜单,须要先将原有菜单删除吗?

不须要,直接执行菜单创建方法就可以,每次创建菜单会自己主动覆盖曾经的菜单。

 

33、什么是微站点?

微站点是新瓶装老酒,被一些搞营销的人给神化了,以至于非常多开发人员都在问什么是微站点,怎样开发微站点。微站点本质上就是以微信浏览器为入口的手机站点(Web APP),能够兼容Android、iOS、WP等操作系统。开发微站点用到的技术与开发普通站点一样,都是基于HTML(HTML5)、CSS、Javascript等,所以有普通站点开发经验的开发人员,全然有能力开发微站点。

PS:刚开始学习的人以后再看到什么以“微”开头的新名词,比如:微商城、微客服、微统计,直接把“微”字去掉或者把“微”当作是“基于微信的”就不难理解了。

 

34、什么是模拟登录?模拟登录微信公众平台能够干什么?

模拟登录指的是通过程序模拟用户在浏览器上的操作。比如,我们通过浏览器訪问微信公众平台,先要登录,登录成功后能够查看用户信息、给用户回复消息、群发消息等,事实上通过程序也能够实现这些操作。

PS:对于模拟登录,官方并沒有明白表态是同意还是禁止,请慎重使用,万一哪天被封号就不划算了,也没法向关注你公众账号的用户交待。

 

35、微信认证是怎样收费的?

服务号申请微信认证须要支付300元/次的审核服务费用,无论终于的认证审核通过与否,都须要支付这笔费用。微信认证成功后,认证的有效期是一年,在有效期快结束时还要再次申请微信认证。


36、微信支付怎样申请?

截止眼下,微信公众平台仍未开放微信支付权限的申请。为什么广东联通、小米手机这些账号有微信支付权限?这些公司大都与微信有着合作关系,提前享受这些权限一点也不奇怪。

 

37、暂时带參二维码有哪些应用场景?

通过微信扫描二维码登录微信网页版,就是暂时带參二维码的典型应用场景。

 

38、微信公众平台开发一般怎样调试?

微信公众平台提供的在线接口调试工具旨在帮助开发人员检測调用公众平台接口时传入的參数是否正确,这款工具对开发人员的帮助事实上并不大。对于调试本地执行的公众账号后台程序,这里给读者推荐两种方法:

1)使用“微信开发调试小工具”,该工具支持在本地调试,工具的使用方法及下载请訪问:http://www.cnblogs.com/linkbiz/

2)使用花生壳动态域名解析软件,通过路由器port映射,能够将自己的电脑变成一台外网server,这样本机执行的公众账号后台程序就能直接与微信server进行交互了。

 

 

39、为什么项目在本地执行正常,也能获取到数据,部署到server上之后公众账号沒有不论什么响应?

遇到这类情况,请读者尝试从下面几个方面排查问题:

1)检查项目在server上是否部署成功,能够尝试方法曾经能够正常执行的功能模块,看是否能正确响应,以便缩小问题范围。

2)检查项目中通过URL传递參数时,假设传递特殊字符(比如:中文、+、&等),是否对特殊字符进行了编码。

3)检查程序的处理是否超时,假设超过5秒,公众账号不响应。

4)检查返回的文本消息、图文消息是否超过限制(文本消息长度<=2048字节,图文消息条数<=10条),若超过限制,公众账号不响应。

5)公众账号不响应也有可能是微信公众平台自身故障导致。

40、为什么URL在浏览器能訪问,放到微信上却不能訪问?

请检查URL中是否包括特殊字符,比如:中文、+、&等,PC上的浏览器通常都会对URL中包括的特殊字符自己主动编码,但有些浏览器不会。为了保证全部的浏览器都能正常訪问URL,请务必对URL中包括特殊字符显示编码,显示编码的意思是代码中能够明白看出编码方式是UTF8、GB2312或者其它。比如像下面这样:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. // 採用操作系统默认的字符集进行编码,在不同的操作系统上表现不一致,不推荐  
  2. java.net.URLEncoder.encode(chinese);  
[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. // 显示编码,推荐使用方法  
  2. java.net.URLEncoder.encode(chinese, "UTF-8");  

PS:非常多刚开始学习的人都觉得唯独URL中包括中文时才须要编码,结果导致OAuth2.0授权接口、通过ticket换取二维码接口总是调用不成功。OAuth2.0授权接口中的回调地址redirect_uri中包括大量特殊字符必须进行编码,通过ticket换取二维码接口中的ticket中可能包括+号也要进行编码。

送给刚开始学习的人一条中肯的建议:不要总是怀疑微信公众平台的接口或者有经验的

本文转自博客园知识天地的博客,原文链接:[044] 微信公众平台开发教程第20篇-新手解惑40则,如需转载请自行联系原博主。


相关文章
|
数据库 云计算
微信公众平台完整开发教程 by ZTalk
微信已然成了一种生活方式:群聊、语音、视频,照片/视频/位置共享,支付和商店有了,还能通过公众账号来获取各种资源……如今的微信就是在日中天的状态(最新估值已达 600 亿),公众平台带来的影响有目共睹,所以很多人都有自己的公众号,想充分利用却无处下手,所以我们在这里给大家提供一下微信公众平台的开发教程,不谢自拿。
146 0
微信公众平台完整开发教程 by ZTalk
|
开发工具 数据安全/隐私保护 索引
Senparc.Weixin.MP SDK 微信公众平台开发教程(十九):MessageHandler 的未知类型消息处理
这是《微信开发深度解析:微信公众号、小程序高效开发秘籍》出版之后写的第一篇微信相关的文章。从这一篇开始,将介绍第一版出版之后添加或修改的功能,或者对书上内容需要做的补充。     MP v14.8.3 开始,在 MessageHandler 中添加了一个名为 OnUnknownTypeRequest(RequestMessageUnknownType requestMessage) 的事件方法,此方法用于处理未知的请求消息类型。
1774 0
|
Web App开发 开发工具
Senparc.Weixin.MP SDK 微信公众平台开发教程(十八):Web代理功能
  在Senparc.Weixin.dll v4.5.7版本开始,我们提供了Web代理功能,以方便在受限制的局域网内的应用可以顺利调用接口。   有关的修改都在Senparc.Weixin/Utilities/HttpUtility/RequestUtility.
1278 0
|
JSON 搜索推荐 开发工具
Senparc.Weixin.MP SDK 微信公众平台开发教程(十七):个性化菜单接口说明
  前不久微信上线了个性化菜单接口,Senparc.Weixin SDK也已经同步更新。   本次更新升级Senparc.Weixin.MP版本到v13.5.2,依赖Senparc.Weixin版本4.5.4。
1315 0
|
API 开发工具
Senparc.Weixin.MP SDK 微信公众平台开发教程(十六):AccessToken自动管理机制
在《Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明》中,我介绍了获取AccessToken(通用接口)的方法。     在实际的开发过程中,所有的高级接口都需要提供AccessToken,因此我们每次在调用高级接口之前,都需要执行一次获取AccessT...
1663 0
|
算法 开发工具 数据安全/隐私保护
Senparc.Weixin.MP SDK 微信公众平台开发教程(十五):消息加密
  前不久,微信的企业号使用了强制的消息加密方式,随后公众号也加入了可选的消息加密选项。目前企业号和公众号的加密方式是一致的(格式会有少许差别)。 加密设置   进入公众号后台的“开发者中心”,我们可以看到Url对接的设置:      点击【修改设置】,可以进入到修改页面:      加密的方式一共有3种: 明文模式,即原始的消息格式 兼容模式,明文、密文将共存,正式发布的产品不建议使用(因为仍然包含了明文,达不到加密的效果) 安全模式,这种模式下消息将会被加密,开发者的服务器可以通过官方给出的算法进行解密,得到明文模式下的消息原文。
1203 0
|
定位技术 API 开发工具
Senparc.Weixin.MP SDK 微信公众平台开发教程(十三):地图相关接口说明
  为了方便大家开发LBS应用,SDK对常用计算公式,以及百度和谷歌的地图接口做了封装。 常用计算:   用于计算2个坐标点之间的直线距离:Senparc.Weixin.MP.Helpers.Distance(double n1, double e1, double n2, double e2) 根据距离获取维度差:Senparc.
1040 0
|
开发工具 数据安全/隐私保护
Senparc.Weixin.MP SDK 微信公众平台开发教程(十四):请求消息去重
  为了确保信息请求消息的到达率,微信服务器在没有及时收到响应消息(ResponseMessage)的情况下,会多次发送同一条请求消息(RequestMessage),包括MsgId等在内的所有文本内容都是一致的。
1134 0
|
开发工具 数据安全/隐私保护 开发者
Senparc.Weixin.MP SDK 微信公众平台开发教程(十):多客服接口说明
微信官方的多客服接口原理是通过用户发送的信息,开发者服务器返回一条指定类型的响应信息,使用户的对话状态切换到官方的多客服状态(持续一段时间),这段时间内用户发送的所有信息都不会到达开发者的服务器,而是转到多客服的软件上。
1276 0
|
API 开发工具
Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明
这里所说的高级接口是指面向通过认证的服务号开通的高级功能。     高级功能大致可以分类为: 用户接口 分组接口 客服接口(有别于之前介绍的多客服) 群发接口 多媒体接口 二维码接口 模板消息接口(不是所有账号都可开通) OAuth2.0(相对比较复杂,后面会有专门介绍)   以上所有的接口都包含在Senparc.Weixin.MP.AdvancedAPIs命名空间下。
1245 0