微信公众平台开发教程第18篇-新手解惑40则

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)具备公网服务器资源。

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

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

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

21、没有公网服务器资源怎么办?

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

2)付费:可以考虑租用VPS(Virtual Private Server,虚拟专用服务器)或阿里云的云服务器。

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

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

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

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

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

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

想要源码的朋友请您免开尊口,我认为这不是一种很好的学习方式和态度,而是一种浮躁的表现。博客中的教程已经讲的很详细了,并且贴出了所有代码(一行也不少),如果这样还不愿意花点时间去理解、消化和动动手,我也无能为力!

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

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

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

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

可以,虽然订阅号没有多媒体文件上传接口权限,无法通过上传多媒体文件到微信服务器获取MediaId,但仍可以变相得到MediaId,同样可以实现回复多媒体消息。变相的实现方法是将用户发送给公众账号的多媒体消息的MediaId记录下来,给用户回复多媒体消息时可以使用。

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

可以。

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

ThumbMediaId不是音乐消息的必须参数,给用户回复音乐消息时可以不传ThumbMediaId参数,类似下面这种示例格式也能正确回复音乐消息:

// 采用操作系统默认的字符集进行编码,在不同的操作系统上表现不一致,不推荐  
java.net.URLEncoder.encode(chinese);  
// 显示编码,推荐用法  
java.net.URLEncoder.encode(chinese, "UTF-8");  

PS:很多初学者都认为只有URL中包含中文时才需要编码,结果导致OAuth2.0授权接口、通过ticket换取二维码接口总是调用不成功。OAuth2.0授权接口中的回调地址redirect_uri中包含大量特殊字符必须进行编码,通过ticket换取二维码接口中的ticket中可能包含+号也要进行编码。

送给初学者一条中肯的建议:不要总是怀疑微信公众平台的接口或者有经验的开发者分享的程序代码有问题,最先应该怀疑自己写的程序有问题,这样才有助于发现问题,从而解决问题。请相信:一套久经考验的平台、程序被初学者发现BUG的情况并不多见。