微信公衆平臺開發教程新手解惑40則

 筆者在CSDN博客頻道推出微信公衆平臺開發教程以後,接觸了許多公衆平臺開發愛好者,也幫助他們解決了許多實際的問題,固然這其中有不少問題都是重複的,所以,筆者將這些問題及解答整理出來,以幫助更多初學者少走彎路。javascript

 

一、訂閱號與服務號的主要區別是什麼?
訂閱號天天能羣發一條消息,沒有自定義菜單及高級接口權限;服務號有自定義菜單及高級接口權限,但每個月只能羣發一條消息。php

 

二、到底該申請訂閱號仍是服務號?
申請哪一種類型的公衆帳號,主要取決於帳號的用途。服務號主要面向企業和組織,旨在爲用戶提供服務;訂閱號主要面向媒體和我的,旨在爲用戶提供信息和資訊。

三、訂閱號是否支持編程開發?
無論是訂閱號,仍是服務號,在高級功能中都有編輯模式和開發模式,訂閱號也支持編程開發,一樣也能與企業系統對接。html

 

四、爲何申請的公衆帳號沒有高級功能?html5

公衆帳號註冊後,要通過微信團隊的審覈,在審覈未完成以前不顯示高級功能。通常審覈會在15個工做日內完成,若是一兩週沒審覈經過均屬正常現象,還請耐心等待。

五、如今訂閱號可否申請自定義菜單?
不能。那爲何有些訂閱號有自定義菜單?這是歷史遺留問題。2013年8月5日,隨着微信5.0的發佈,公衆帳號被劃分爲訂閱號和服務號,全部的公衆帳號都被默認爲訂閱號,而且有一次轉服務號的機會,許多在此以前申請到自定義菜單的帳號並無轉爲服務號,因此就存在一些訂閱號有自定義菜單,例如:36氪、蓉城先鋒、天府之光等。java

補充:2013年12月24日,公衆平臺針對訂閱號作了重要更新。政府、傳統媒體、明星等非企業性質的訂閱號能夠申請微信認證,經過微信認證的訂閱號可得到自定義菜單接口權限。python

 

六、如今申請的訂閱號可否轉服務號?android

 

不能。只有2013年8月5日微信5.0發佈之前申請的訂閱號纔有一次轉服務號的機會,在此以後申請的訂閱號不能轉服務號。ios

那若是真的有轉服務號的需求怎麼解決?只能從新申請一個服務號。數據庫


七、目前一個身份證號能申請幾個公衆帳號?編程

2個。

 

八、使用一個公司的材料能申請多少個公衆帳號?
沒有限制。

 

九、在註冊公衆帳號時,提示「你註冊的公衆號名稱存在侵權風險,請先完成微博驗證」,這是什麼意思?

公衆平臺對一些可能存在侵權的關鍵詞進行了保護,例如:「微信」、「移動」、「搜狐」等,若是註冊的公衆帳號名稱中包含這類關鍵詞,提交時就會提示存在侵權風險。

遇到這種狀況時,要麼避開這些關鍵詞換個名稱註冊,要麼就根據提示先完成微博驗證再繼續註冊。

 

十、我的可否申請服務號?

不能,我的只能申請訂閱號。服務號的運營主體必須爲組織,例如:企業、政府、其餘組織等。

 

十一、公衆帳號的名稱能夠重複嗎?
公衆帳號的名稱能夠重複,不用擔憂被他人搶注。

 

十二、公衆帳號的名稱能夠修改嗎?
公衆帳號名稱一經設置沒法修改,公衆平臺沒有提供帳號更名的功能,所以在註冊帳號時取名應謹慎。

 

1三、微信認證與微博認證有什麼區別?

微信認證是針對於服務號,微博認證是針對於訂閱號。也就是說,訂閱號只能申請微博認證,服務號只能申請微信認證。

 

1四、是否須要粉絲數達到500才能申請微信認證?

只要是服務號均可以申請微信認證,與粉絲數無關。只有訂閱號申請微博認證纔要求粉絲數必須達到500。

 

1五、編輯模式與開發模式可以同時使用嗎?

不能,這兩種模式是互斥的,開啓編輯模式就必須關閉開發模式,開啓開發模式就必須關閉編輯模式。

 

1六、如今用的是編輯模式,之後還能夠選擇使用開發模式嗎?

能夠,任什麼時候候均可以根據須要切換到另一種模式。

 

1七、編輯模式切換到開發模式以後,在編輯模式中設置的內容還在嗎?還有效嗎?

在編輯模式中設置的內容,只要本身不手動刪除,會永遠存在的,但這些設置在開發模式下無效。

 

1八、開發模式的菜單爲何忽然消失了?

菜單不會平白無故的消失,若是開發人員沒有手動刪除,那必定是有人開啓過編輯模式引發的。請注意:開啓編輯模式後,在開發模式下建立的菜單會被刪除。


1九、使用開發模式須要具有哪些條件?

1)至少掌握一門編程語言;2)具有公網服務器資源。

 

20、微信公衆平臺支持哪些編程語言?應該如何選擇?

凡是支持動態Web開發的編程語言都可以用於微信公衆平臺開發,例如:JavaPHP、ASP.NET、Ruby、Python、Note.js等。

開者人員應該選擇本身最擅長的編程語言進行開發,若是都不擅長怎麼辦?若是都不擅長,建議選擇Java或PHP,緣由在於網上關於微信公衆平臺開發的資料大都是基於Java和PHP的,開發起來要相對容易。

 

2一、沒有公網服務器資源怎麼辦?

1)免費:能夠考慮使用雲環境,例如,BAE(Baidu App Engine,百度應用引擎)和SAE(Sina App Engine,新浪應用引擎)。

2)付費:能夠考慮租用VPS(Virtual Private Server,虛擬專用服務器)或阿里雲的雲服務器。

若是僅是爲了學習微信公衆平臺開發,我的建議使用BAE。

 

2二、若是想使用Java進行微信公衆平臺開發至少須要掌握哪些內容?

至少須要掌握Java基礎知識、JSP、Servlet、Javabean和JDBC(操做數據庫)。

 

2三、公司的項目大都是基於SSH框架進行開發,能使用SSH開發微信公衆帳號嗎?

固然能夠,前面說過,凡是支持動態Web開發的編程語言都能用於微信公衆平臺開發。其實,Struts本質上也是Servlet。

 

2四、柳峯老師,能夠給我一份微信公衆平臺項目的源碼嗎?

想要源碼的朋友請您免開尊口,我認爲這不是一種很好的學習方式和態度,而是一種浮躁的表現。博客中的教程已經講的很詳細了,而且貼出了全部代碼(一行也很多),若是這樣還不肯意花點時間去理解、消化和動動手,我也無能爲力!

PS:曾經也有一些開發者、創業團隊和公司提出要買小q機器人(xiaoqrobot)的源碼,有的開價是5位數,但都被我拒絕了。相比之下,我更願意把小q機器人的完整實現過程寫成一篇篇技術文章免費分享出來,帶動更多的開發者加入到微信公衆平臺開發陣營!

 

2五、公衆帳號可以經過程序主動向關注用戶發消息嗎?

截止目前,公衆平臺尚未開放主動向用戶發消息的接口。爲何招行能夠?我前面說的是沒有「開放」主動發消息的接口,並不表明沒有該接口。若是貴公司也有招行的實力,我相信你也有辦法申請到;若是沒有這樣的實力,那就不要費事了。

 

2六、訂閱號使用開發模式可以向用戶回覆圖片、語音和視頻消息嗎?

能夠,雖然訂閱號沒有多媒體文件上傳接口權限,沒法經過上傳多媒體文件到微信服務器獲取MediaId,但仍能夠變相獲得MediaId,一樣能夠實現回覆多媒體消息。變相的實現方法是將用戶發送給公衆帳號的多媒體消息的MediaId記錄下來,給用戶回覆多媒體消息時可使用。

 

2七、訂閱號使用開發模式可以向用戶回覆音樂消息嗎?

能夠。

 

2八、音樂消息包含參數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>  

 

 

2九、訂閱號與非微信認證的服務號可以向回覆哪些類型的消息?

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

 

30、爲何項目代碼與柳峯老師教程中的同樣,發消息給公衆帳號卻沒有任何響應?

這是我寫微信公衆平臺開發教程以來,初學者給我反饋最多的問題。能夠確定的是,至今爲止,我博客中貼出的全部代碼所有都能正常運行,沒有任何問題。遇到上面這種問題大都是由如下三種狀況引發:

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

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

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

 

3一、爲何自定義菜單建立成功了,在微信客戶端的公衆帳號上卻不顯示?

因爲微信客戶端緩存的緣由,自定義菜單建立成功後,須要24小時之後才能顯示出來。開發者在測試時,能夠嘗試取消關注公衆帳號後再次關注,這樣能當即看到最新的菜單效果。

PS:菜單更新、菜單刪除也會有緩存。

 

3二、若是要更新公衆帳號的自定義菜單,須要先將原有菜單刪除嗎?

不須要,直接執行菜單建立方法便可,每次建立菜單會自動覆蓋之前的菜單。

 

3三、什麼是微網站?

微網站是新瓶裝老酒,被一些搞營銷的人給神化了,以致於不少開發者都在問什麼是微網站,如何開發微網站。微網站本質上就是以微信瀏覽器爲入口的手機網站(Web APP),可以兼容AndroidiOS、WP等操做系統。開發微網站用到的技術與開發普通網站同樣,都是基於HTML(HTML5)、CSS、JavaScript等,因此有普通網站開發經驗的開發者,徹底有能力開發微網站。

PS:初學者之後再看到什麼以「微」開頭的新名詞,例如:微商城、微客服、微統計,直接把「微」字去掉或者把「微」看成是「基於微信的」就不難理解了。

 

3四、什麼是模擬登陸?模擬登陸微信公衆平臺可以幹什麼?

模擬登陸指的是經過程序模擬用戶在瀏覽器上的操做。例如,咱們經過瀏覽器訪問微信公衆平臺,先要登陸,登陸成功後可以查看用戶信息、給用戶回覆消息、羣發消息等,其實經過程序也可以實現這些操做。

PS:對於模擬登陸,官方並無明確表態是容許仍是禁止,請謹慎使用,萬一哪天被封號就不划算了,也無法向關注你公衆帳號的用戶交待。

 

3五、微信認證是如何收費的?

服務號申請微信認證須要支付300元/次的審覈服務費用,不管最終的認證審覈經過與否,都須要支付這筆費用。微信認證成功後,認證的有效期是一年,在有效期快結束時還要再次申請微信認證。


3六、微信支付如何申請?

截止目前,微信公衆平臺仍未開放微信支付權限的申請。爲何廣東聯通、小米手機這些帳號有微信支付權限?這些公司大都與微信有着合做關係,提早享受這些權限一點也不奇怪。

 

3七、臨時帶參二維碼有哪些應用場景?

經過微信掃描二維碼登陸微信網頁版,就是臨時帶參二維碼的典型應用場景。

 

3八、微信公衆平臺開發通常如何調試?

微信公衆平臺提供的在線接口調試工具旨在幫助開發者檢測調用公衆平臺接口時傳入的參數是否正確,這款工具對開發者的幫助其實並不大。對於調試本地運行的公衆帳號後臺程序,這裏給讀者推薦兩種方法:

1)使用「微信開發調試小工具」,該工具支持在本地調試,工具的用法及下載請訪問:http://www.cnblogs.com/linkbiz/

2)使用花生殼動態域名解析軟件,經過路由器端口映射,能夠將本身的電腦變成一臺外網服務器,這樣本機運行的公衆帳號後臺程序就能直接與微信服務器進行交互了。

 

 

3九、爲何項目在本地運行正常,也能獲取到數據,部署到服務器上以後公衆帳號沒有任何響應?

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

1)檢查項目在服務器上是否部署成功,能夠嘗試方法之前可以正常運行的功能模塊,看可否正確響應,以便縮小問題範圍。

2)檢查項目中經過URL傳遞參數時,若是傳遞特殊字符(例如:中文、+、&等),是否對特殊字符進行了編碼。

3)檢查程序的處理是否超時,若是超過5秒,公衆帳號不響應。

4)檢查返回的文本消息、圖文消息是否超過限制(文本消息長度<=2048字節,圖文消息條數<=10條),若超過限制,公衆帳號不響應。

5)公衆帳號不響應也有多是微信公衆平臺自身故障致使。

 

 

40、爲何URL在瀏覽器能訪問,放到微信上卻不能訪問?

請檢查URL中是否包含特殊字符,例如:中文、+、&等,PC上的瀏覽器一般都會對URL中包含的特殊字符自動編碼,但有些瀏覽器不會。爲了保證全部的瀏覽器都能正常訪問URL,請務必對URL中包含特殊字符顯示編碼,顯示編碼的意思是代碼中可以明確看出編碼方式是UTF八、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中可能包含+號也要進行編碼。

相關文章
相關標籤/搜索