「豆郵」,是社區網站「豆瓣」的一個相似私信的功能模塊。在豆瓣官網,「豆郵」曾一度被改成「私信」,但在遭到衆多豆瓣用戶的強烈反對以後又改了回來。然而,在豆瓣的移動客戶端上,仍稱呼爲「私信」。html
豆郵的設定我想最初真的是當作郵件的形式來讓用戶之間交流的,可隨着移動端的普及,豆郵被不少用戶當成了即時通信軟件來使用,根本停不下來。前端
「就不能加個微信qq之類的嗎?」web
「不,那樣不文藝。」編程
爲了將這種不良的風氣,額,發揚光大,我決定寫一款桌面軟件,好讓衆多豆瓣文藝青年,能夠邊工做邊聊天,不再用頻繁看手機了。json
--------------如下才是正文------------- windows
簡要步驟:開啓Fiddler的「容許遠程鏈接」,設置端口號,手機和電腦須要在同一個wifi網絡下,設置手機wifi的代理到電腦,此時,手機的全部http請求都可以在Fiddler中監聽到。以後開啓https的監聽,設置host過濾,只監聽豆瓣的api地址。api
其中,在Composer標籤頁中能夠清楚的顯示請求的Url,header,body等信息,而且可以經過隨意修改這些數據進行調試,很是方便。瀏覽器
以後,咱們便獲得了豆瓣的各類API接口,包括登陸與註銷、獲取用戶信息,聊天列表,聊天內容,關注列表,消息通知等。微信
在使用用戶名和密碼登陸以後,會生成一個access token以及refresh token。access token 將做爲用戶登陸的惟一憑證,使用時將其賦值給header請求中的Authorization: Bearer便可。首次登陸後,咱們將access token保存到本地,使用戶下次能夠直接登錄而不須要從新輸入用戶名和密碼。網絡
OAuth2.0將access token設計爲短效的,在必定時間內會過時。根據須要咱們可使用refresh token對access token進行刷新,造成新的憑據。具體方法是將請求中的grant_type的值更改成refresh_token便可。
界面效果以下:
聊天窗口使用了WPF自帶的WebBrowser控件,默認內核版本是IE7(能夠經過修改註冊表的方式換成更高版本的IE),天然不支持H5以及CSS3。討厭IE的同窗,可使用第三方的瀏覽器內核控件。以後本身動手寫一下CSS樣式以及JS交互,簡單測試一下兼容性問題就OK了。
WPF原生支持高分辨率,幸福滿滿。
只是WebBrowser控件在高DPI的屏幕下,沒有按照系統默認進行縮放。還好IE支持zoom屬性,咱們經過必定的縮放比例來對網頁的body的zoom屬性進行設置。那如何肯定這一比例呢?通常來講96DPI對應100%,144DPI對應150%。OK,問題解決。
務必將http請求服務放入後臺執行,任什麼時候候都不能讓界面去等待。本例中主要使用Task來進行處理。
豆瓣API中有單獨監測消息提醒的接口,可返回未讀消息數量以及提醒版本號,咱們只需對該請求進行輪詢,並比較返回的版本號,就能夠作到對未讀消息進行提醒或顯示處理。
用過的都說好。
1.發送和顯示emoji表情。
2.搜素新用戶。
【徹底開源】知乎日報UWP版(上篇):界面設計、官方API分析
軟件在功能完善以後,將開放安裝包與源代碼,共同窗習交流。