1. 程式人生 > >[044] 微信公眾平臺開發教程第20篇-新手解惑40則

[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)具備公網伺服器資源。


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引數,類似下面這種示例格式也能正確回覆音樂訊息:

<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、訂閱號與非微信認證的服務號能夠向回覆哪些型別的訊息?

在開發模式下,訂閱號與非微信認證的服務號只能向用戶回覆文字訊息、音樂訊息和圖文訊息。


30、為什麼專案程式碼與柳峰老師教程中的一樣,發訊息給公眾賬號卻沒有任何響應?

這是我寫微信公眾平臺開發教程以來,初學者給我反饋最多的問題。可以肯定的是,至今為止,我部落格中貼出的所有程式碼全部都能正常執行,沒有任何問題。遇到上面這種問題大都是由以下三種情況引起:

1)在公眾平臺開發模式下,成為開發者卻忘記開啟開發模式,即開發模式的開關是關閉狀態。

2)通過上傳WAR包的方式部署應用時,匯出的WAR包中沒有包含JAR。建議初學者直接將專案需要的JAR拷貝到專案中,這樣通過開發工具匯出的WAR包就會包含JAR。

3)專案中引入的第三方JAR包與筆者教程中使用的JAR包版本不一致。

31、為什麼自定義選單建立成功了,在微信客戶端的公眾賬號上卻不顯示?

由於微信客戶端快取的原因,自定義選單建立成功後,需要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)使用花生殼動態域名解析軟體,通過路由器埠對映,可以將自己的電腦變成一臺外網伺服器,這樣本機執行的公眾賬號後臺程式就能直接與微信伺服器進行互動了。

39、為什麼專案在本地執行正常,也能獲取到資料,部署到伺服器上之後公眾賬號沒有任何響應?

遇到這類情況,請讀者嘗試從以下幾個方面排查問題:

1)檢查專案在伺服器上是否部署成功,可以嘗試方法以前能夠正常執行的功能模組,看能否正確響應,以便縮小問題範圍。

2)檢查專案中通過URL傳遞引數時,如果傳遞特殊字元(例如:中文、+、&等),是否對特殊字元進行了編碼。

3)檢查程式的處理是否超時,如果超過5秒,公眾賬號不響應。

4)檢查返回的文字訊息、圖文訊息是否超過限制(文字訊息長度<=2048位元組,圖文訊息條數<=10條),若超過限制,公眾賬號不響應。

5)公眾賬號不響應也有可能是微信公眾平臺自身故障導致。

40、為什麼URL在瀏覽器能訪問,放到微信上卻不能訪問?

請檢查URL中是否包含特殊字元,例如:中文、+、&等,PC上的瀏覽器通常都會對URL中包含的特殊字元自動編碼,但有些瀏覽器不會。為了保證所有的瀏覽器都能正常訪問URL,請務必對URL中包含特殊字元顯示編碼,顯示編碼的意思是程式碼中能夠明確看出編碼方式是UTF8、GB2312或者其它。例如像下面這樣:

// 採用作業系統預設的字符集進行編碼,在不同的作業系統上表現不一致,不推薦
java.net.URLEncoder.encode(chinese);
// 顯示編碼,推薦用法
java.net.URLEncoder.encode(chinese, "UTF-8");
PS:很多初學者都認為只有URL中包含中文時才需要編碼,結果導致OAuth2.0授權介面、通過ticket換取二維碼介面總是呼叫不成功。OAuth2.0授權介面中的回撥地址redirect_uri中包含大量特殊字元必須進行編碼,通過ticket換取二維碼介面中的ticket中可能包含+號也要進行編碼。

送給初學者一條中肯的建議:不要總是懷疑微信公眾平臺的介面或者有經驗的開發者分享的程式程式碼有問題,最先應該懷疑自己寫的程式有問題,這樣才有助於發現問題,從而解決問題。請相信:一套久經考驗的平臺、程式被初學者發現BUG的情況並不多見。

CSDN2013年度部落格之星評選活動開始,本人有幸入圍參加評選,如果部落格中的文章對你有所幫助,請為柳峰投上寶貴一票,非常感謝!