【編者按】由CSDN和《程序員》雜志聯(lián)合主辦的 2014年微信開發(fā)者大會 將于8月23日在北京舉行,邀請了來自于一線的微信開發(fā)商技術(shù)負(fù)責(zé)人或資深工程師從企業(yè)應(yīng)用開發(fā)高級篇、智能客服與LBS、微信支付、微信上的HTML5社交應(yīng)用、微信小店開發(fā)等角度為與會者帶來實戰(zhàn)分享( 議程 )。目前報名處于優(yōu)惠票價階段,通過申請加入CSDN CTO俱樂部即可享受8折購票價格(票款中均含午餐),在8月1日前完成付款的同學(xué)還將免費獲贈微信開發(fā)圖書一本(兩選一,活動現(xiàn)場發(fā)放)。
值得一提的是,CSDN優(yōu)秀博主、暢銷書《微信公眾平臺應(yīng)用開發(fā):方法、技巧與案例》的作者柳峰受邀做本次活動講師之一,演講主題《智能客服與LBS開發(fā)的“坑”與解決之道》。他在CSDN博客中( 查看)撰寫了幾十篇+的微信開發(fā)技術(shù)文章,多篇訪問量都在3萬+,以下這篇《 微信公眾平臺開發(fā)教程新手解惑40則》摘自他的博客。
全文如下:
筆者在CSDN博客頻道推出微信公眾平臺開發(fā)教程之后,接觸了許多公眾平臺開發(fā)愛好者,也幫助他們解決了許多實際的問題,當(dāng)然這其中有很多問題都是重復(fù)的,因此,筆者將這些問題及解答整理出來,以幫助更多初學(xué)者少走彎路。
1、訂閱號與服務(wù)號的主要區(qū)別是什么?
訂閱號每天能群發(fā)一條消息,沒有自定義菜單及高級接口權(quán)限;服務(wù)號有自定義菜單及高級接口權(quán)限,但每月只能群發(fā)一條消息。
2、到底該申請訂閱號還是服務(wù)號?
申請哪種類型的公眾賬號,主要取決于賬號的用途。服務(wù)號主要面向企業(yè)和組織,旨在為用戶提供服務(wù);訂閱號主要面向媒體和個人,旨在為用戶提供信息和資訊。
3、訂閱號是否支持編程開發(fā)?
不管是訂閱號,還是服務(wù)號,在高級功能中都有編輯模式和開發(fā)模式,訂閱號也支持編程開發(fā),同樣也能與企業(yè)系統(tǒng)對接。
4、為什么申請的公眾賬號沒有高級功能?
公眾賬號注冊后,要經(jīng)過微信團(tuán)隊的審核,在審核未完成之前不顯示高級功能。一般審核會在15個工作日內(nèi)完成,如果一兩周沒審核通過均屬正常現(xiàn)象,還請耐心等待。
5、現(xiàn)在訂閱號能否申請自定義菜單?
不能。那為什么有些訂閱號有自定義菜單?這是歷史遺留問題。2013年8月5日,隨著微信5.0的發(fā)布,公眾賬號被劃分為訂閱號和服務(wù)號,所有的公眾賬號都被默認(rèn)為訂閱號,并且有一次轉(zhuǎn)服務(wù)號的機(jī)會,許多在此之前申請到自定義菜單的賬號并沒有轉(zhuǎn)為服務(wù)號,所以就存在一些訂閱號有自定義菜單,例如:36氪、蓉城先鋒、天府之光等。
補(bǔ)充:2013年12月24日,公眾平臺針對訂閱號做了重要更新。政府、傳統(tǒng)媒體、明星等非企業(yè)性質(zhì)的訂閱號可以申請微信認(rèn)證,通過微信認(rèn)證的訂閱號可獲得自定義菜單接口權(quán)限。
6、現(xiàn)在申請的訂閱號能否轉(zhuǎn)服務(wù)號?
不能。只有2013年8月5日微信5.0發(fā)布以前申請的訂閱號才有一次轉(zhuǎn)服務(wù)號的機(jī)會,在此之后申請的訂閱號不能轉(zhuǎn)服務(wù)號。
那如果真的有轉(zhuǎn)服務(wù)號的需求怎么解決?只能重新申請一個服務(wù)號。
7、目前一個身份證號能申請幾個公眾賬號?2個。
8、使用一個公司的材料能申請多少個公眾賬號?
沒有限制。
9、在注冊公眾賬號時,提示“你注冊的公眾號名稱存在侵權(quán)風(fēng)險,請先完成微博驗證”,這是什么意思?
公眾平臺對一些可能存在侵權(quán)的關(guān)鍵詞進(jìn)行了保護(hù),例如:“微信”、“移動”、“搜狐”等,如果注冊的公眾賬號名稱中包含這類關(guān)鍵詞,提交時就會提示存在侵權(quán)風(fēng)險。
遇到這種情況時,要么避開這些關(guān)鍵詞換個名稱注冊,要么就根據(jù)提示先完成微博驗證再繼續(xù)注冊。
10、個人能否申請服務(wù)號?
不能,個人只能申請訂閱號。服務(wù)號的運營主體必須為組織,例如:企業(yè)、政府、其他組織等。
11、公眾賬號的名稱可以重復(fù)嗎?
公眾賬號的名稱可以重復(fù),不用擔(dān)心被他人搶注。
12、公眾賬號的名稱可以修改嗎?
公眾賬號名稱一經(jīng)設(shè)置無法修改,公眾平臺沒有提供賬號改名的功能,因此在注冊賬號時取名應(yīng)謹(jǐn)慎。
13、微信認(rèn)證與微博認(rèn)證有什么區(qū)別?
微信認(rèn)證是針對于服務(wù)號,微博認(rèn)證是針對于訂閱號。也就是說,訂閱號只能申請微博認(rèn)證,服務(wù)號只能申請微信認(rèn)證。
14、是否需要粉絲數(shù)達(dá)到500才能申請微信認(rèn)證?
只要是服務(wù)號都可以申請微信認(rèn)證,與粉絲數(shù)無關(guān)。只有訂閱號申請微博認(rèn)證才要求粉絲數(shù)必須達(dá)到500。
15、編輯模式與開發(fā)模式能夠同時使用嗎?
不能,這兩種模式是互斥的,開啟編輯模式就必須關(guān)閉開發(fā)模式,開啟開發(fā)模式就必須關(guān)閉編輯模式。
16、現(xiàn)在用的是編輯模式,以后還可以選擇使用開發(fā)模式嗎?
可以,任何時候都可以根據(jù)需要切換到另外一種模式。
17、編輯模式切換到開發(fā)模式之后,在編輯模式中設(shè)置的內(nèi)容還在嗎?還有效嗎?
在編輯模式中設(shè)置的內(nèi)容,只要自己不手動刪除,會永遠(yuǎn)存在的,但這些設(shè)置在開發(fā)模式下無效。
18、開發(fā)模式的菜單為什么突然消失了?
菜單不會無緣無故的消失,如果開發(fā)人員沒有手動刪除,那一定是有人開啟過編輯模式引起的。請注意:開啟編輯模式后,在開發(fā)模式下創(chuàng)建的菜單會被刪除。
19、使用開發(fā)模式需要具備哪些條件?
1)至少掌握一門編程語言;2)具備公網(wǎng)服務(wù)器資源。
20、微信公眾平臺支持哪些編程語言?應(yīng)該如何選擇?
凡是支持動態(tài)Web開發(fā)的編程語言都能夠用于微信公眾平臺開發(fā),例如:Java、PHP、ASP.NET、Ruby、Python、Note.js等。
開者人員應(yīng)該選擇自己最擅長的編程語言進(jìn)行開發(fā),如果都不擅長怎么辦?如果都不擅長,建議選擇Java或PHP,原因在于網(wǎng)上關(guān)于微信公眾平臺開發(fā)的資料大都是基于Java和PHP的,開發(fā)起來要相對容易。
21、沒有公網(wǎng)服務(wù)器資源怎么辦?
1)免費:可以考慮使用云環(huán)境,例如,BAE(Baidu App Engine,百度應(yīng)用引擎)和SAE(Sina App Engine,新浪應(yīng)用引擎)。
2)付費:可以考慮租用VPS(Virtual Private Server,虛擬專用服務(wù)器)或阿里云的云服務(wù)器。
如果僅是為了學(xué)習(xí)微信公眾平臺開發(fā),個人建議使用BAE。
22、如果想使用Java進(jìn)行微信公眾平臺開發(fā)至少需要掌握哪些內(nèi)容?
至少需要掌握J(rèn)ava基礎(chǔ)知識、JSP、Servlet、Javabean和JDBC(操作數(shù)據(jù)庫)。
23、公司的項目大都是基于SSH框架進(jìn)行開發(fā),能使用SSH開發(fā)微信公眾賬號嗎?
當(dāng)然可以,前面說過,凡是支持動態(tài)Web開發(fā)的編程語言都能用于微信公眾平臺開發(fā)。其實,Struts本質(zhì)上也是Servlet。24、柳峰老師,可以給我一份微信公眾平臺項目的源碼嗎?
想要源碼的朋友請您免開尊口,我認(rèn)為這不是一種很好的學(xué)習(xí)方式和態(tài)度,而是一種浮躁的表現(xiàn)。博客中的教程已經(jīng)講的很詳細(xì)了,并且貼出了所有代碼(一行也不少),如果這樣還不愿意花點時間去理解、消化和動動手,我也無能為力!
PS:曾經(jīng)也有一些開發(fā)者、創(chuàng)業(yè)團(tuán)隊和公司提出要買小q機(jī)器人(xiaoqrobot)的源碼,有的開價是5位數(shù),但都被我拒絕了。相比之下,我更愿意把小q機(jī)器人的完整實現(xiàn)過程寫成一篇篇技術(shù)文章免費分享出來,帶動更多的開發(fā)者加入到微信公眾平臺開發(fā)陣營!
25、公眾賬號能夠通過程序主動向關(guān)注用戶發(fā)消息嗎?
截止目前,公眾平臺還沒有開放主動向用戶發(fā)消息的接口。為什么招行可以?我前面說的是沒有“開放”主動發(fā)消息的接口,并不代表沒有該接口。如果貴公司也有招行的實力,我相信你也有辦法申請到;如果沒有這樣的實力,那就不要費事了。
26、訂閱號使用開發(fā)模式能夠向用戶回復(fù)圖片、語音和視頻消息嗎?
可以,雖然訂閱號沒有多媒體文件上傳接口權(quán)限,無法通過上傳多媒體文件到微信服務(wù)器獲取MediaId,但仍可以變相得到MediaId,同樣可以實現(xiàn)回復(fù)多媒體消息。變相的實現(xiàn)方法是將用戶發(fā)送給公眾賬號的多媒體消息的MediaId記錄下來,給用戶回復(fù)多媒體消息時可以使用。
27、訂閱號使用開發(fā)模式能夠向用戶回復(fù) 音樂消息嗎?
可以。
28、音樂消息包含參數(shù)ThumbMediaId,沒有高級接口權(quán)限的公眾賬號無法獲得ThumbMediaId,怎么回復(fù)音樂消息?
ThumbMediaId不是音樂消息的必須參數(shù),給用戶回復(fù)音樂消息時可以不傳ThumbMediaId參數(shù),類似下面這種示例格式也能正確回復(fù)音樂消息:
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType><![CDATA[music]]></MsgType> <Music> <Title><![CDATA[TITLE]]></Title> <Description><![CDATA[DESCRIPTION]]></Description> <MusicUrl><![CDATA[MUSIC_Url]]></MusicUrl> <HQMusicUrl><![CDATA[HQ_MUSIC_Url]]></HQMusicUrl> </Music> </xml>
29、訂閱號與非微信認(rèn)證的服務(wù)號能夠向回復(fù)哪些類型的消息?
在開發(fā)模式下,訂閱號與非微信認(rèn)證的服務(wù)號只能向用戶回復(fù)文本消息、音樂消息和圖文消息。
30、為什么項目代碼與柳峰老師教程中的一樣,發(fā)消息給公眾賬號卻沒有任何響應(yīng)?
這是我寫微信公眾平臺開發(fā)教程以來,初學(xué)者給我反饋最多的問題。可以肯定的是,至今為止,我博客中貼出的所有代碼全部都能正常運行,沒有任何問題。遇到上面這種問題大都是由以下三種情況引起:
1)在公眾平臺開發(fā)模式下,成為開發(fā)者卻忘記開啟開發(fā)模式,即開發(fā)模式的開關(guān)是關(guān)閉狀態(tài)。
2)通過上傳WAR包的方式部署應(yīng)用時,導(dǎo)出的WAR包中沒有包含JAR。建議初學(xué)者直接將項目需要的JAR拷貝到項目中,這樣通過開發(fā)工具導(dǎo)出的WAR包就會包含JAR。
3)項目中引入的第三方JAR包與筆者教程中使用的JAR包版本不一致。
31、為什么自定義菜單創(chuàng)建成功了,在微信客戶端的公眾賬號上卻不顯示?
由于微信客戶端緩存的原因,自定義菜單創(chuàng)建成功后,需要24小時以后才能顯示出來。開發(fā)者在測試時,可以嘗試取消關(guān)注公眾賬號后再次關(guān)注,這樣能立即看到最新的菜單效果。
PS:菜單更新、菜單刪除也會有緩存。
32、如果要更新公眾賬號的自定義菜單,需要先將原有菜單刪除嗎?
不需要,直接執(zhí)行菜單創(chuàng)建方法即可,每次創(chuàng)建菜單會自動覆蓋以前的菜單。
33、什么是微網(wǎng)站?
微網(wǎng)站是新瓶裝老酒,被一些搞營銷的人給神化了,以至于很多開發(fā)者都在問什么是微網(wǎng)站,如何開發(fā)微網(wǎng)站。微網(wǎng)站本質(zhì)上就是以微信瀏覽器為入口的手機(jī)網(wǎng)站(Web APP),能夠兼容Android、iOS、WP等操作系統(tǒng)。開發(fā)微網(wǎng)站用到的技術(shù)與開發(fā)普通網(wǎng)站一樣,都是基于HTML(HTML5)、CSS、Javascript等,所以有普通網(wǎng)站開發(fā)經(jīng)驗的開發(fā)者,完全有能力開發(fā)微網(wǎng)站。
PS:初學(xué)者以后再看到什么以“微”開頭的新名詞,例如:微商城、微客服、微統(tǒng)計,直接把“微”字去掉或者把“微”當(dāng)作是“基于微信的”就不難理解了。
34、什么是模擬登錄?模擬登錄微信公眾平臺 能夠干什么?
模擬登錄指的是通過程序模擬用戶在瀏覽器上的操作。例如,我們通過瀏覽器訪問微信公眾平臺,先要登錄,登錄成功后能夠查看用戶信息、給用戶回復(fù)消息、群發(fā)消息等,其實通過程序也能夠?qū)崿F(xiàn)這些操作。
PS:對于模擬登錄,官方并沒有明確表態(tài)是允許還是禁止,請謹(jǐn)慎使用,萬一哪天被封號就不劃算了,也沒法向關(guān)注你公眾賬號的用戶交待。
35、微信認(rèn)證是如何收費的?
服務(wù)號申請微信認(rèn)證需要支付300元/次的審核服務(wù)費用,無論最終的認(rèn)證審核通過與否,都需要支付這筆費用。微信認(rèn)證成功后,認(rèn)證的有效期是一年,在有效期快結(jié)束時還要再次申請微信認(rèn)證。
36、微信支付如何申請?
截止目前,微信公眾平臺仍未開放微信支付權(quán)限的申請。為什么廣東聯(lián)通、小米手機(jī)這些賬號有微信支付權(quán)限?這些公司大都與微信有著合作關(guān)系,提前享受這些權(quán)限一點也不奇怪。
37、臨時帶參二維碼有哪些應(yīng)用場景?
通過微信掃描二維碼登錄微信網(wǎng)頁版,就是臨時帶參二維碼的典型應(yīng)用場景。
38、微信公眾平臺開發(fā)一般如何調(diào)試?
微信公眾平臺提供的 在線接口調(diào)試工具旨在幫助開發(fā)者檢測調(diào)用公眾平臺接口時傳入的參數(shù)是否正確,這款工具對開發(fā)者的幫助其實并不大。對于調(diào)試本地運行的公眾賬號后臺程序,這里給讀者推薦兩種方法:
1)使用“微信開發(fā)調(diào)試小工具”,該工具支持在本地調(diào)試,工具的用法及下載請訪問: http://www.cnblogs.com/linkbiz/。2)使用 花生殼動態(tài)域名解析軟件,通過路由器端口映射,可以將自己的電腦變成一臺外網(wǎng)服務(wù)器,這樣本機(jī)運行的公眾賬號后臺程序就能直接與微信服務(wù)器進(jìn)行交互了。
39、為什么項目在本地運行正常,也能獲取到數(shù)據(jù),部署到服務(wù)器上之后公眾賬號沒有任何響應(yīng)?
遇到這類情況,請讀者嘗試從以下幾個方面排查問題:
1)檢查項目在服務(wù)器上是否部署成功,可以嘗試方法以前能夠正常運行的功能模塊,看能否正確響應(yīng),以便縮小問題范圍。
2)檢查項目中通過URL傳遞參數(shù)時,如果傳遞特殊字符(例如:中文、+、&等),是否對特殊字符進(jìn)行了編碼。
3)檢查程序的處理是否超時,如果超過5秒,公眾賬號不響應(yīng)。
4)檢查返回的文本消息、圖文消息是否超過限制(文本消息長度<=2048字節(jié),圖文消息條數(shù)<=10條),若超過限制,公眾賬號不響應(yīng)。
5)公眾賬號不響應(yīng)也有可能是微信公眾平臺自身故障導(dǎo)致。
40、為什么URL在瀏覽器能訪問,放到微信上卻不能訪問?
請檢查URL中是否包含特殊字符,例如:中文、+、&等,PC上的瀏覽器通常都會對URL中包含的特殊字符自動編碼,但有些瀏覽器不會。 為了保證所有的瀏覽器都能正常訪問URL,請務(wù)必對URL中包含特殊字符顯示編碼,顯示編碼的意思是代碼中能夠明確看出編碼方式是UTF8、GB2312或者其它。例如像下面這樣:
// 采用操作系統(tǒng)默認(rèn)的字符集進(jìn)行編碼,在不同的操作系統(tǒng)上表現(xiàn)不一致,不推薦 java.net.URLEncoder.encode(chinese);
// 顯示編碼,推薦用法 java.net.URLEncoder.encode(chinese, "UTF-8");
送給初學(xué)者一條中肯的建議:不要總是懷疑微信公眾平臺的接口或者有經(jīng)驗的開發(fā)者分享的程序代碼有問題,最先應(yīng)該懷疑自己寫的程序有問題,這樣才有助于發(fā)現(xiàn)問題,從而解決問題。請相信:一套久經(jīng)考驗的平臺、程序被初學(xué)者發(fā)現(xiàn)BUG的情況并不多見。
歡迎大家到現(xiàn)場與柳峰深度溝通。目前, 2014微信開發(fā)者大會首批講師和議程已經(jīng)出爐(持續(xù)關(guān)注 官網(wǎng)更新)。另外,主委會還開設(shè)了 講師和話題公開征集平臺,歡迎技術(shù)精英自薦和互相推薦,也可以直接聯(lián)系 @CSDN付江 @CSDN陳秋歌 。
2014微信開發(fā)者大會議程(持續(xù)更新)
此外,主辦方還特別開設(shè)了 “微信公眾平臺優(yōu)秀開發(fā)商”征集評選活動( 更多詳情)現(xiàn)在就去 投票。微信開發(fā)者QQ群:375106712(已滿)和微信開發(fā)者② QQ群:369742525,歡迎加入交流。
相關(guān)閱讀: