4月28日,已增加多媒體上傳及下載API,對應MediaUploadRequest和MediaGetRequest
十載的北海街道網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應快,48小時及時工作處理。成都全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整北海街道建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“北海街道網(wǎng)站設(shè)計”,“北海街道網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
----------------------------------------------------------------------------
4月24日,感謝@八二制造的提醒,修復了自定義菜單查詢返回的錯誤,現(xiàn)已修正。
-----------------------------------------------------------------------------
4月21日,框架類庫已更新至NuGet,在NuGet中搜索JCSoft或者Weixin就能查到,感謝大家的支持,后續(xù)會把Outh3驗證加上
NuGet控制臺使用方法:
PM> Install-Package JCSoft.WX.Framework
----------------------------------------------------
用了一個多星期的時間,把微信快速開發(fā)框架進行了改進,之前1.0版本針對的是普通訂閱號,V2.0版本將會對微信所有接口都進行支持。樓主開發(fā)的目的也是想讓大家能夠快速建立起微信公眾平臺(WXPP),據(jù)說現(xiàn)在開發(fā)個微信公眾平臺月薪可以達到10K,如果您覺得好,也可以捐助樓主一下,哈哈。
好久沒被首推了,現(xiàn)在怎么申請首推啊?
此次更新的內(nèi)容:
1、去除了Model類庫,合并到WX.Framework類庫
2、增加了對高級接口的支持
3、增加了API調(diào)用方式
4、支持獲取AccessToken
5、增加了測試代碼
6、增加群發(fā)功能,包括群發(fā)后時間的響應。
這次更新的內(nèi)容較多,我會一一來演示給大家看的,目前還未支持上傳和下載媒體文件,對于微信文檔中說的Post/Form方式不太了解,示例也用了CURL,這個更不了解了。
如果您剛解除微信公眾平臺,可以參考【建立微信公眾平臺測試賬號】,目前微信公眾平臺賬號類型分為:訂閱號,服務(wù)號,賬號類型的不同,所支持的接口也不相同:
之前1.0版本僅僅支持訂閱號未認證的情況。1.0版本的使用可以參考:【體驗微信公眾平臺快速開發(fā)框架】和【利用快速開發(fā)框架,快速搭建微信瀏覽博客園首頁文章】
通過實現(xiàn)IMessageRole.MessageRole(MiddleMessage message)和IMessageHandler.HandlerRequestMessage(MiddleMessage message),自定義規(guī)則和返回數(shù)據(jù)。在此不再重復表述。
V2.0已經(jīng)基本支持自定義菜單及高級接口,自定義菜單和高級接口采用API方式與微信服務(wù)器端交互。
IApiClient:Api接口類
DefaultApiClient:實現(xiàn)了IApiClient的Execute方法
ApiResponse:微信服務(wù)端返回的數(shù)據(jù),這個是個抽象類,所有繼承的Response在WX.Model.Responses命名空間內(nèi)
ApiRequest
ApiRequest
ApiAccessTokenManager:因為自定義菜單及高級接口都需要AccessToken,所以寫了一個TokenManager,使用的是單例模式,如果您想使用此類,您必須在配置文件中提供:wxappid和wxappsecret的值,也可以通過ApiAccessTokenManager.Instance.SetAppIdentity(appid, appsecret)初始設(shè)置。
上述已經(jīng)說明,在自定義菜單和高級接口中,都需要提供AccessToken,AccessToken的獲取方式可以查看微信平臺文檔。
自定義獲取AccessToken方式:
varappid =newAppIdentication("appid","appsecret"); varrequest =newAccessTokenRequest(appid); IApiClientclient =newDefaultApiClient(); varresponse = client.Execute(request); if(response.IsError) { Console.WriteLine("get token is error"); } else { Console.WriteLine(response.Access_Token); }
使用ApiAccessTokenManager獲取AccessToken:
ApiAccessTokenManager.Instance.GetCurrentToken();
使用ApiAccessTokenManager的話,必須先設(shè)置AppId和AppSecret,有2種方式:
1、配置文件方式:
2、代碼方式:
ApiAccessTokenManager.Instance.SetAppIdentity("123","123");
要注意下,GetCurrentToken()使用前,您必須配置好您的Appid和AppSecret。
ApiAccessTokenManager還提供了過期管理,一般Token的有效時間為7200秒,ApiAccessTokenManager可以自動刷新Token。
普通的訂閱號只要認證以后,就支持了自定義菜單,目前認證費為300元,接口詳細文檔請點擊查看
我們先看下實現(xiàn)后的效果:
接下來,我們看下實現(xiàn)代碼:
varrequest =newMenuCreateRequest { AccessToken =ApiAccessTokenManager.Instance.GetCurrentToken(), Buttons =newList{ newClickButton{ Name ="博客", Url ="http://inday.cnblogs.com", Type =ClickButtonType.view }, newClickButton{ Name ="文章", SubButton =newList { newClickButton{ Name ="推薦", Url ="http://www.cnblogs.com", Type =ClickButtonType.view }, newClickButton{ Name ="精華", Url ="http://www.cnblogs.com/pick/", Type =ClickButtonType.view } } }, newClickButton{ Name ="新聞", Url="http://www.cnblogs.com/news/", Type =ClickButtonType.view }, } }; varresponse = m_client.Execute(request); if(response.IsError) { Console.WriteLine(response); } else { Assert.Equal(false, response.IsError); Assert.Equal("ok", response.ErrorMessage); }
簡單吧,你只要提供一個MenuCreateRequest的實例,通過IApiClient.Execute執(zhí)行就可以了。
我在Api.Requests和Api.Responses中的命名規(guī)則是根據(jù)微信服務(wù)器路徑的規(guī)則。比如創(chuàng)建自定義菜單的url為:
所以我的Request就是MenuCreateRequest,對應的Response就是MenuCreateResponse。
如果想看測試想過,請微信掃描一下我的測試公眾賬號:
接下來我們看下如何獲取所有關(guān)注用戶,此為高級接口,需要服務(wù)號+認證,詳情點擊查看文檔
varrequest =newUserGetRequest { AccessToken =ApiAccessTokenManager.Instance.GetCurrentToken(), NextOpenId ="" }; varresponse = m_client.Execute(request); if(!response.IsError) { foreach(varuserinresponse.Data.OpenIds) { Console.WriteLine(user); } }
默認每次提取10000個關(guān)注用戶,我在Xunit測試下,測試結(jié)果如下:
OpenId為對于某一公眾賬號的唯一標示,我們可以指定NextOpenId指定提取此ID后10000個關(guān)注用戶,比如:
varrequest =newUserGetRequest { AccessToken =ApiAccessTokenManager.Instance.GetCurrentToken(), NextOpenId ="oI1_vjreLbQfGy79Thnsh5ziJZNo" };
結(jié)果:
篇幅有限,不可能一一介紹,大家可以參考微信開發(fā)文檔,使用申請測試賬號進行測試,快速開發(fā)框架對應的Api如下表所示。
功能 |
ApiRequest |
ApiResponse |
自定義菜單創(chuàng)建接口 |
MenuCreateRequest |
MenuCreateResponse |
自定義菜單查詢接口 |
MenuGetRequest |
MenuGetResponse |
自定義菜單刪除接口 |
MenuDeleteRequest |
MenuDeleteResponse |
創(chuàng)建分組 |
GroupsCreateRequest |
GroupsCreateResponse |
查詢所有分組 |
GroupsGetRequest |
GroupsGetResponse |
查詢用戶所在分組 |
GroupsGetIdRequest |
GroupsGetIdResponse |
修改分組名 |
GroupsUpdateRequest |
GroupsUpdateResponse |
移動用戶分組 |
GroupsMembersUpdateRequest |
GroupsMembersUpdateResponse |
獲取用戶基本信息 |
UserInfoRequest |
UserInfoResponse |
獲取關(guān)注者列表 |
UserGetRequest |
UserGetResponse |
創(chuàng)建二維碼Ticket |
QrcodeCreateRequest |
QrcodeCreateResponse |
上傳圖文消息素材 |
MediaUploadNewsRequest |
MediaUploadNewsResponse |
根據(jù)分組進行群發(fā) |
MessageMassSendAllRequest |
MessageMassSendAllResponse |
根據(jù)OpenId列表進行發(fā)送 |
MessageMassSendRequest |
MessageMassSendResponse |
刪除群發(fā) |
MessageMassDeleteRequest |
MessageMassDeleteResponse |
經(jīng)過一段時間的更新代碼,對于微信快速開發(fā)框架也算告一段落,后續(xù)可能會比較忙碌點,如果出現(xiàn)bug,請大家與我取得聯(lián)系,我會第一時間去更新代碼,過段時間也會提供到騰訊公眾論壇去,看看能否被推薦。
在項目中,我加入了測試項目,其中Really開頭的為真實測試,需要Appid和AppSecret,Mock開頭的為虛擬的,只測試了輸出和返回的驗證,可能不太嚴謹,但因為時間有限所以未做詳細的測試。
在ApiRequest類中,都有Validate()的方法,目前還未完善,只有簡單的對于AccessToken的驗證,后續(xù)會與微信公眾開發(fā)平臺標準進行更新。
目前源代碼完全公開在Github中,開源協(xié)議還未想好,等有空再說吧。
最近參加了某個公司的應聘,未成功,人家就看了簡歷就否了,沒辦法,人老珠黃,文憑才中專,經(jīng)驗多有何用呢,呵呵!有好公司覺得在下還可以,可以與我私聊,不過本人有言在先,本人簡歷寫得很爛(懶得更新,那么多項目誰記得清楚呢),無文憑(如果中專也算的話。。。),英文不會說只會看(目前關(guān)鍵就是在學英文),不過本人除了會開發(fā)外,還會根據(jù)工作的性質(zhì),技術(shù)結(jié)合工作來,相信物有所值滴。還有要筆試基礎(chǔ)的就免了,實在沒腦子去背這么多,不是專業(yè)的面試狂,只是想改善家庭生活而已。