认识微信公众号
?
?
?
目錄
1????概念????2
2????主要提供服務????2
2.1????公眾號消息會話????2
2.2????公眾號內網頁????2
3????公眾號類型????3
4????測試號????6
4.1????測試號管理界面????6
4.2????測試號權限列表????6
5????公眾號相關配置????10
5.1????認證服務號????10
5.1.1????確認已添加相關功能插件????10
5.1.2????如果需要用到微信支付,請額外申請。????11
5.1.3????公眾號設置。????11
5.1.4????公眾號功能設置。????12
5.1.5????開發配置????14
5.2????測試號配置????16
6????常見問題????21
6.1????redirect-uri參數錯誤。如下圖所示????21
6.2????JSSDK錯誤????22
6.3????上傳多張照片時,IOS系統無法正常上傳,一直顯示加載狀態。????22
6.4????permission denied????22
6.5????上傳完成后,沒有看到上傳的素材????22
?
概念
在開始之前,我們需要認識以下幾個概念:
- 微信公眾平臺是運營者通過公眾號為微信用戶提供資訊和服務的平臺。
- 微信公眾號是開發者或商家在微信公眾平臺上申請的應用賬號。
- 公眾平臺開發接口則是提供服務的基礎,開發者在公眾平臺網站中創建公眾號、獲取接口權限后,可以通過使用公眾平臺開發接口進行業務開發,為移動應用、PC端網站、公眾號第三方平臺(為各行各業公眾號運營者提供服務)的開發。
主要提供服務
公眾號消息會話
公眾號是以微信用戶的一個聯系人形式存在的,消息會話是公眾號與用戶交互的基礎。目前公眾號內主要有這樣幾類消息服務的類型,分別用于不同的場景。
注意:服務號每月4次指的是每個用戶4次,舉個例子,每個月公眾號可以向用戶甲單獨推送4條信息,同時也可以向乙推送4條信息。
注意:如果被動回復消息時,處理業務時長超過5秒,建議先回復微信服務器響應成功,然后通過客服消息接口或者模板消息接口進行回復。
公眾號內網頁
許多復雜的業務場景,需要通過網頁形式來提供服務,這時需要用到:
1)網頁授權獲取用戶基本信息:通過該接口,可以獲取用戶的基本信息(獲取用戶的OpenID是無需用戶同意的,獲取用戶的基本信息則需用戶同意)
2)微信JS-SDK:是開發者在網頁上通過JavaScript代碼使用微信原生功能的工具包,開發者可以使用它在網頁上錄制和播放微信語音、監聽微信分享、上傳手機本地圖片、拍照等許多能力。
?
公眾號類型
在進行微信網頁開發之前,我們需要對公眾號類型有一定的了解。如下圖所示:
服務號、訂閱號、企業號的介紹(區別)?
- 訂閱號:為媒體和個人提供一種新的信息傳播方式,構建與讀者之間更好的溝通與管理模式。主要偏于為用戶傳達資訊(類似報紙雜志),認證前后都是每天只可以群發一條消息;
注意:訂閱號無法獲取到OPENID等信息。可以考慮被動回復獲取OPENID組織Url給用戶。
- 服務號:給企業和組織提供更強大的業務服務與用戶管理能力,幫助企業快速實現全新的公眾號服務平臺。主要偏于服務交互(類似銀行,114,提供服務查詢),認證前后都是每個月可群發4條消息;
- 企業號:為企業或組織提供移動應用入口,幫助企業建立與員工、上下游供應鏈及企業應用間的連接。主要用于公司內部通訊使用,需要先有成員的通訊信息驗證才可以關注成功企業號;
?
接口權限列表:
| 接口名稱 | 未認證訂閱號 | 微信認證訂閱號 | 未認證服務號 | 微信認證服務號 |
| 基礎支持-獲取access_token | 有 | 有 | 有 | 有 |
| 基礎支持-獲取微信服務器IP地址 | 有 | 有 | 有 | 有 |
| 接收消息-驗證消息真實性、接收普通消息、接收事件推送、接收語音識別結果 | 有 | 有 | 有 | 有 |
| 發送消息-被動回復消息 | 有 | 有 | 有 | 有 |
| 發送消息-客服接口 | ? | 有 | ? | 有 |
| 發送消息-群發接口 | ? | 有 | ? | 有 |
| 發送消息-模板消息接口(發送業務通知) | ? | ? | ? | 有 |
| 用戶管理-用戶分組管理 | ? | 有 | ? | 有 |
| 用戶管理-設置用戶備注名 | ? | 有 | ? | 有 |
| 用戶管理-獲取用戶基本信息 | ? | 有 | ? | 有 |
| 用戶管理-獲取用戶列表 | ? | 有 | ? | 有 |
| 用戶管理-獲取用戶地理位置 | ? | ? | ? | 有 |
| 用戶管理-網頁授權獲取用戶openid/用戶基本信息 | ? | ? | ? | 有 |
| 推廣支持-生成帶參數二維碼 | ? | ? | ? | 有 |
| 推廣支持-長鏈接轉短鏈接口 | ? | ? | ? | 有 |
| 界面豐富-自定義菜單 | ? | 有 | 有 | 有 |
| 素材管理-素材管理接口 | ? | 有 | ? | 有 |
| 智能接口-語義理解接口 | ? | ? | ? | 有 |
| 多客服-獲取多客服消息記錄、客服管理 | ? | ? | ? | 有 |
| 微信支付接口 | ? | ? | ? | 需申請 |
| 微信小店接口 | ? | ? | ? | 需申請 |
| 微信卡券接口 | ? | 需申請 | ? | 需申請 |
| 微信設備功能接口 | ? | ? | ? | 需申請 |
| 微信JS-SDK-基礎接口 | 有 | 有 | 有 | 有 |
| 微信JS-SDK-分享接口 | ? | 有 | ? | 有 |
| 微信JS-SDK-圖像接口 | 有 | 有 | 有 | 有 |
| 微信JS-SDK-音頻接口 | 有 | 有 | 有 | 有 |
| 微信JS-SDK-智能接口(網頁語音識別) | 有 | 有 | 有 | 有 |
| 微信JS-SDK-設備信息 | 有 | 有 | 有 | 有 |
| 微信JS-SDK-地理位置 | 有 | 有 | 有 | 有 |
| 微信JS-SDK-界面操作 | 有 | 有 | 有 | 有 |
| 微信JS-SDK-微信掃一掃 | 有 | 有 | 有 | 有 |
| 微信JS-SDK-微信小店 | ? | ? | ? | 有 |
| 微信JS-SDK-微信卡券 | ? | 有 | ? | 有 |
| 微信JS-SDK-微信支付 | ? | ? | ? | 有 |
?
幾種公眾號具體的權限說明請查看:http://mp.weixin.qq.com/wiki/13/8d4957b72037e3308a0ca1b21f25ae8d.html
?
一般情況下,我們使用認證服務號為企業提供服務。
測試號
除了訂閱號、服務號、企業號可以用于開發之外,我們還可以使用測試號進行開發和測試。測試號申請地址如下:http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index
測試號管理界面
測試號權限列表
| 類目 | 功能 | 接口 | 每日調用上限/次 | 操作 |
| 對話服務 | 基礎支持 | 獲取access_token | 2000? | ?? |
| 獲取微信服務器IP地址 | 無上限 | ?? | ||
| 接收消息 | 驗證消息真實性 | 無上限 | ?? | |
| 接收普通消息 | 無上限 | ?? | ||
| 接收事件推送 | 無上限 | ?? | ||
| 接收語音識別結果 | 無上限 | 關閉 | ||
| 發送消息 | 自動回復 | 無上限 | ?? | |
| 客服接口 | 500000? | ?? | ||
| 群發接口 | 詳情 | ?? | ||
| 模板消息(業務通知) | 100000? | ?? | ||
| 用戶管理 | 用戶分組管理 | 詳情 | ?? | |
| 設置用戶備注名 | 10000? | ?? | ||
| 獲取用戶基本信息 | 500000? | ?? | ||
| 獲取用戶列表 | 500? | ?? | ||
| 獲取用戶地理位置 | 無上限 | 關閉 | ||
| 推廣支持 | 生成帶參數二維碼 | 100000? | ?? | |
| 長鏈接轉短鏈接接口 | 1000? | ?? | ||
| 界面豐富 | 自定義菜單 | 詳情 | ?? | |
| 素材管理 | 素材管理接口 | 詳情 | ?? | |
| 功能服務 | 智能接口 | 語義理解接口 | 1000? | ? |
| 設備功能 | 設備功能接口 | 無上限 | 開啟 | |
| 多客服 | 獲取客服聊天記錄 | 5000? | ? | |
| 客服管理 | 詳情 | ? | ||
| 會話控制 | 詳情 | ? | ||
| 網頁服務 | 網頁帳號 | 網頁授權獲取用戶基本信息 | 無上限 | 修改 |
| 基礎接口 | 判斷當前客戶端版本是否支持指定JS接口 | 無上限 | ? | |
| 分享接口 | 獲取"分享到朋友圈"按鈕點擊狀態及自定義分享內容接口 | 無上限 | ? | |
| 獲取"分享給朋友"按鈕點擊狀態及自定義分享內容接口 | 無上限 | ? | ||
| 獲取"分享到QQ"按鈕點擊狀態及自定義分享內容接口 | 無上限 | ? | ||
| 獲取"分享到騰訊微博"按鈕點擊狀態及自定義分享內容接口 | 無上限 | ? | ||
| 圖像接口 | 拍照或從手機相冊中選圖接口 | 無上限 | ? | |
| 預覽圖片接口 | 無上限 | ? | ||
| 上傳圖片接口 | 無上限 | ? | ||
| 下載圖片接口 | 無上限 | ? | ||
| 音頻接口 | 開始錄音接口 | 無上限 | ? | |
| 停止錄音接口 | 無上限 | ? | ||
| 播放語音接口 | 無上限 | ? | ||
| 暫停播放接口 | 無上限 | ? | ||
| 停止播放接口 | 無上限 | ? | ||
| 上傳語音接口 | 無上限 | ? | ||
| 下載語音接口 | 無上限 | ? | ||
| 智能接口 | 識別音頻并返回識別結果接口 | 無上限 | ? | |
| 設備信息 | 獲取網絡狀態接口 | 無上限 | ? | |
| 地理位置 | 使用微信內置地圖查看位置接口 | 無上限 | ? | |
| 獲取地理位置接口 | 無上限 | ? | ||
| 界面操作 | 隱藏右上角菜單接口 | 無上限 | ? | |
| 顯示右上角菜單接口 | 無上限 | ? | ||
| 關閉當前網頁窗口接口 | 無上限 | ? | ||
| 批量隱藏功能按鈕接口 | 無上限 | ? | ||
| 批量顯示功能按鈕接口 | 無上限 | ? | ||
| 隱藏所有非基礎按鈕接口 | 無上限 | ? | ||
| 顯示所有功能按鈕接口 | 無上限 | ? |
?
測試號基本上能滿足日常的開發使用,不過請注意相關接口每日調用上限。
公眾號相關配置
在進入開發之前,我們需要對公眾號進行一些配置,否則會出現一些莫名其妙的錯誤,浪費我們大量的時間和精力。下面先以認證服務號為例,我們先需要注意配置以下內容:
認證服務號
確認已添加相關功能插件
默認的情況下,申請完認證服務號,微信并沒有默認開通所有的功能。因此大家需要將自己需要用到的功能添加進來。如下圖所示:
如果需要用到微信支付,請額外申請。
公眾號設置。
申請完公眾號后,建議優先設置頭像、微信號、介紹等內容:
公眾號功能設置。
此處很容易被忽略,設置入口如下所示:
如上圖所示,以下兩點要特別注意。
業務域名:設置業務域名后,在微信內訪問該域名下頁面時,不會被重新排版。
JS接口安全域名:設置JS接口安全域名后,公眾號開發者可在該域名下調用微信開放的JS接口。比如選擇相冊、上傳照片、錄音以及上傳錄音等等。
如果使用認證服務號并且需要使用到JSSDK,請注意配置JS接口安全域名,并域名必須是已備案的一級域名。如果是配置測試號,則可以使用未備案的域名以及二級域名。
JS接口安全域名配置界面如下所示:
開發配置
APPId和AppSecret:用于生成AccessToken。
服務器配置:用于接收微信服務器事件請求,比如關注事件、取消關注事件、關鍵字、菜單點擊等等。配置如下圖所示,服務器地址對是否需要域名備案沒有要求:
設置OAUTH2.0網頁授權域名:如果需要使用OAUTH接口獲取到微信粉絲信息,就必須設置此處域名。設置步驟如下所示:
注意:如果在微信網頁想獲取到當前粉絲信息(包括OPENID),請使用OAuth網頁授權接口并且設置【授權回調頁面域名】。使用框架中的WeChatOAuth也需要配置【授權回調頁面域名】。
測試號配置
測試號配置相對簡單明了,我們先來看看界面:
如上所示,接口配置信息用于配置服務器事件地址和Token,以接收服務器事件消息。JS接口安全域名配置同認證服務號。
同樣的,測試號也有接口權限列表:
注意,別忘了配置【網頁授權域名】。如下所示:
這里順便說下測試號的申請。申請地址如下:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
只要用微信掃一掃,你就可以擁有自己的測試號了。
測試號是開發人員用于開發測試的不二選擇,申請測試號也是比較簡單方便。不過在使用過程中,請注意測試號的接口權限以及調用次數。值得注意的是,測試號的模板消息是自行隨意編輯的,而不是從模板庫選擇,建議大家從模板庫中復制模板內容,然后根據模板庫編號(非模板消息編號)進行模板消息推送。
?
配置好以上內容之后,我們就可以著手微信網頁開發了。
常見問題
redirect-uri參數錯誤。如下圖所示
答:這是在使用網頁授權獲取用戶基本信息接口是所拋出的錯誤。在懷疑參數排序或者處理之前,請確認已經設置【授權回調頁面域名】。如果您使用了WeChatOAuth篩選器來獲取用戶信息,那么生成鏈接的錯誤性基本上沒有。
?
JSSDK錯誤
答:在確認配置以及寫法是否正確之前,請確認已經配置【JS接口安全域名】。如果您使用了框架的封裝來配置JSSDK,那么配置錯誤的可能性基本沒有。
?
上傳多張照片時,IOS系統無法正常上傳,一直顯示加載狀態。
答:JSSDK上傳接口Bug,框架中的JSSDK封裝默認修復了此問題,處理方式見博客:http://www.cnblogs.com/codelove/p/5247090.html
?
permission denied
答:確保公眾號已經認證,并且jsApiList參數中包括相關api的權限。框架默認配置中包含了所有的權限。
?
上傳完成后,沒有看到上傳的素材
答:使用JSSDK上傳后,素材將會上傳到臨時素材之中,請使用相關接口下載到服務器。
總結
- 上一篇: 快速高效计算sin与cos
- 下一篇: BaseAdapter的抽取