[044] 微信公衆平臺開發教程第20篇-新手解惑40則

  筆者在CSDN博客頻道推出微信公衆平臺開發教程以後,接觸了不少公衆平臺開發愛好者,也幫助他們攻克了不少實際的問題,固然這當中有很是多問題都是反覆的,所以,筆者將這些問題及解答整理出來,以幫助許多其餘剛開始學習的人少走彎路。html

 

一、訂閱號與服務號的主要差異是什麼?
訂閱號天天能羣發一條消息,沒有本身定義菜單及高級接口權限;服務號有本身定義菜單及高級接口權限,但每個月僅僅能羣發一條消息。java

 

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

三、訂閱號是否支持編程開發?
不管是訂閱號,仍是服務號,在高級功能中都有編輯模式和開發模式,訂閱號也支持編程開發,相同也能與企業系統對接。數據庫

 

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

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

五、現在訂閱號是否能申請本身定義菜單?
不能。那爲何有些訂閱號有本身定義菜單?這是歷史遺留問題。2013年8月5日,隨着微信5.0的公佈,公衆帳號被劃分爲訂閱號和服務號,所有的公衆帳號都被默以爲訂閱號,並且有一次轉服務號的機會,不少在此以前申請到本身定義菜單的帳號並沒有轉爲服務號,因此就存在一些訂閱號有本身定義菜單,好比:36氪、蓉城先鋒、天府之光等。瀏覽器

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

 

六、現在申請的訂閱號是否能轉服務號?微信

 

不能。惟獨2013年8月5日微信5.0公佈曾經申請的訂閱號纔有一次轉服務號的機會,在此以後申請的訂閱號不能轉服務號。微信開發

那假設真的有轉服務號的需求怎麼解決?僅僅能又一次申請一個服務號。微信公衆平臺


七、眼下一個身份證號能申請幾個公衆帳號?框架

2個。

 

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

 

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

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

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

 

十、我的是否能申請服務號?

不能,我的僅僅能申請訂閱號。服務號的運營主體必須爲組織,好比:企業、政府、其它組織等。

 

十一、公衆帳號的名稱可以反覆嗎?
公衆帳號的名稱可以反覆,不用操心被他人搶注。

 

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

 

1三、微信認證與微博認證有什麼差異?

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

 

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

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

 

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

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

 

1六、現在用的是編輯模式,之後還可以選擇使用開發模式嗎?

可以,不論何時都可以依據需要切換到第二種模式。

 

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

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

 

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

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


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

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

 

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

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

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

 

2一、沒有公網server資源怎麼辦?

1)免費:可以考慮使用雲環境,好比,BAE(Baidu App Engine,百度應用引擎)和SAE(Sina App Engine,新浪應用引擎)。

2)付費:可以考慮租用VPS(Virtual Private Server,虛擬專用server)或阿里雲的雲server。

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

 

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

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

 

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

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

 

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

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

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

 

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

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

 

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

可以,儘管訂閱號沒有多媒體文件上傳接口權限,沒法經過上傳多媒體文件到微信server獲取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一、爲何本身定義菜單建立成功了,在微信client的公衆帳號上卻不顯示?

由於微信client緩存的緣由,本身定義菜單建立成功後,需要24小時之後才幹顯示出來。開發人員在測試時,可以嘗試取消關注公衆帳號後再次關注,這樣能立刻看到最新的菜單效果。

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

 

3二、假設要更新公衆帳號的本身定義菜單,需要先將原有菜單刪除嗎?

不需要,直接執行菜單建立方法就能夠,每次建立菜單會本身主動覆蓋曾經的菜單。

 

3三、什麼是微站點?

微站點是新瓶裝老酒,被一些搞營銷的人給神化了,以致於很是多開發人員都在問什麼是微站點,怎樣開發微站點。微站點本質上就是以微信瀏覽器爲入口的手機站點(Web APP),可以兼容Android、iOS、WP等操做系統。開發微站點用到的技術與開發普通站點同樣,都是基於HTML(HTML5)、CSS、Javascript等,因此有普通站點開發經驗的開發人員,全然有能力開發微站點。

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

 

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

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

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

 

3五、微信認證是怎樣收費的?

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


3六、微信支付怎樣申請?

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

 

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

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

 

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

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

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

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

 

 

3九、爲何項目在本地執行正常,也能獲取到數據,部署到server上以後公衆帳號沒有不論什麼響應?

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

1)檢查項目在server上是否部署成功,可以嘗試方法曾經可以正常執行的功能模塊,看是否能正確響應,以便縮小問題範圍。

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中可能包括+號也要進行編碼。

 

送給剛開始學習的人一條中肯的建議:不要老是懷疑微信公衆平臺的接口或者有經驗的開發人員分享的程序代碼有問題,最早應該懷疑本身寫的程序有問題,這樣纔有助於發現問題,從而解決這個問題。請相信:一套久經考驗的平臺、程序被剛開始學習的人發現BUG的狀況並很少見。

 

CSDN2013年度博客之星評選活動開始,本人有幸入圍參加評選,假設博客中的文章對你有所幫助,請爲柳峯投上寶貴一票,很是感謝!

投票地址:http://vote.blog.csdn.net/blogstaritem/blogstar2013/lyq8479

 

轉帖請註明本文出自柳峯的博客(http://blog.csdn.net/lyq8479),請尊重他人的辛勤勞動成果,謝謝!

相關文章
相關標籤/搜索