Windows Phone 7应用之Tencent微博——封装API[上篇]
馬上就要春節(jié)放假.年底活動安排的比較多.庸庸碌碌了一陣,忙中偷閑 這篇博文已經(jīng)在LiveWriter躺了三天.下午回來一打開就看見標(biāo)題.繼續(xù)來完善Windows phone 7上Tencent微博客戶端.上一篇中Windows Phone 7應(yīng)用之Tencent微博——OAuth認(rèn)證?提到以O(shè)Auth協(xié)議驗證的原理流程,本篇來關(guān)注一下Tencent微博OAuth協(xié)議API封裝. 目前Tencent 微博采用Google OAuth開放協(xié)議. 這是Google OAuth認(rèn)證服務(wù)中提供的一個開源項目.其中提供多種語言Java/C#/Ruby等實現(xiàn)OAuth協(xié)議底層代碼.版本是1.0的. 目前OAuth 2.0協(xié)議可能在年后[2011]推出. 不過在Google一個小項目中Play Ground With OAuth中已經(jīng)推出OAuth2.0認(rèn)證服務(wù). 據(jù)我所知Oauth1.0 在訪問安全上存在漏洞.才衍生出2.0 版本.但這個說法沒有得到權(quán)威機構(gòu)的證實. 如果對OAuth協(xié)議底層實現(xiàn)感興趣的同學(xué)可以研究一下.
在進(jìn)入封裝Tencent OAuth協(xié)議API前,需要一些準(zhǔn)備工作. 注冊一個微博開放平臺開發(fā)者賬號.也就是我上節(jié)提到Appkey. 在這里想發(fā)一下牢騷.注冊Sina微博需要身份證號綁定. 原因不解釋.各位體會. 表示反感. 另外就是進(jìn)入Sina 微博開放平臺.你會發(fā)現(xiàn) 東西太多了. 作為一個第三方應(yīng)用開發(fā)者你該干什么?從那下手呢? 你需要持續(xù)看完幾大篇介紹平臺文章才看到自己關(guān)心重點. 這也是我說Sina API是一個"巨無霸"絕非是空穴來風(fēng). 另外一個就是針對申請開發(fā)者賬號, 采用一個獨立微博 類似發(fā)一條消息 等候驗證. 這種方式不僅在某種程度上暴露了開發(fā)者個人信息同時也是自己應(yīng)用信息在未審核通過之前被他人瀏覽了, Sina在主觀上暴露了開發(fā)者意圖隱私上沒有做保護. 太沒安全感.開發(fā)人員的IDea很容易在未審核前提就被他人給剽竊了. 審核時間令人不敢恭維. 而Tencent在我發(fā)出第一次請求后就受理 通過,. 短短兩天時間.并且是在審核之后才對外公開相應(yīng)應(yīng)用信息.
首先是Sina綁定身份證方式就讓我覺得沒有安全感.網(wǎng)絡(luò)上沒有自由性. 這仿佛也注定自己對Sina Mini Blog 始終沒有信心. 當(dāng)然常玩推特同學(xué)就不用擔(dān)心這個問題了. 墻內(nèi)和墻外是另個世界. 如上純屬于個人看法.Sina沒有贏得我的好感,.轉(zhuǎn)入正題 來說申請Appkey開發(fā)者賬號.
Tencent Mini Blog PlatFrom[開發(fā)平臺]:http://open.t.qq.com/?點擊大概看一下開發(fā)微博引用流程 你是否覺得這種方式比Sina那大篇幅文字要直觀呢?:
審核通過后就看到從屬于開發(fā)者和對應(yīng)應(yīng)用唯一標(biāo)識AppKey:
有了開發(fā)應(yīng)用AppKey剩下問題就來關(guān)注一下不同等級Appkey訪問Tencent 微博的權(quán)限問題:
在第三方應(yīng)用中關(guān)鍵是具有寫請求權(quán)限. 這樣我們才可以通過第三方向Tencent 微博平臺寫入數(shù)據(jù). 這就意味至少要從Tencent那里拿到中級授權(quán). 對于開發(fā)而言單個AppKey 具有75W次訪問頻率 已經(jīng)足夠使用. 其他相關(guān)素材以說明請參考Tencent Mini Blog PlatFrom[開發(fā)平臺]:http://open.t.qq.com/?如下重點來說一下Tencent 微博對第三方訪問時API封裝.
?
一般在微博的應(yīng)用中.涉及到開放平臺都具有兩個核心特點. 第一個就是對外公開具備安全機制的數(shù)據(jù)訪問協(xié)議[上篇講到的Google OAuth]?另外一個因素就是開放平臺數(shù)據(jù)流的流入和流出. 即開放平臺本身的意義 開放數(shù)據(jù)讀取. 和寫入. 那磨對外公開的統(tǒng)一的API無非制定一個統(tǒng)一方式. 另外一個目前Sina和Tencent 都采用的是Google OAuth協(xié)議方式. 現(xiàn)在我們都能看到各自推出官方的支持不同語言的API.當(dāng)然也包括一些第三方定義API. 如果你對Google OAuth協(xié)議有興趣.也可以完全根據(jù)開放Sina或是Tencent等開放平臺協(xié)議.可以寫出一套自己的訪問API. 這里來詳細(xì)解析一下Tencent微博開放平臺Google OAuth協(xié)議時如何工作的; 這也是封裝API的前提.
ok.在開放平臺中提供不同語言的SDK下載?這里拿C#作為標(biāo)準(zhǔn)語言. 官方也提供C#的比較簡單的SDK.如果你覺得沒有必要重復(fù)制造輪子.就拿官方提供版本來具體看一下Google OAuth如何工作的:?C#版本的SDK下載地址?打開解決方案:
在Google OAuth協(xié)議中我們首先需要獲得Request Token的授權(quán) 在通過Request Token授權(quán)信息獲取Access_Token即最終開放平臺身份認(rèn)證才可實現(xiàn)第三方的數(shù)據(jù)讀寫.如上SDK中Oauth.cs即定義Google Oauth的源碼 你可以可以在?Google OAuth開源項目中看到. 實現(xiàn)請求的方式有兩種同步SyncHttp和異步AsyncHttp. QWeiboRequest則封裝這兩種請求的方式.來看看如何首先拿到RequstToken的授權(quán): 在APi中可以看到Tencent給出請求說明:?需要參數(shù):
request_token-URL地址:https://open.t.qq.com/cgi-bin/request_token.?發(fā)起一個Requst_token:
在對應(yīng)參數(shù)中需要指定Appkey的鍵值對. 和回調(diào)路徑[也可以不指定 這里為了演示]. 就可以發(fā)起指定Get請求.來看一下帶有完整參數(shù)獲取Request_Token URL:
ok.用Fiddler監(jiān)視一下請求的參數(shù)和數(shù)據(jù):
看一下返回值和對應(yīng)參數(shù):-返回值:
參數(shù)說明:
You See!這就是一個Request _Token從請求參數(shù)發(fā)出到返回值的整個過程, 獲取Request_Token最為關(guān)鍵參數(shù)就是Oauth_token我們可以通過它獲得AccessToken. 依次類推可以根據(jù)Tencent給出官方說明 獲得AccessToken 具體實現(xiàn):
通過Requst_token 獲得認(rèn)證后就成功獲取Access_Token前提條件Oauth_token參數(shù). 通過OAuth_Token從Tencent服務(wù)器端交換過來一個Access_token. 從Tencent請求需要參數(shù):
求的整個URL參數(shù)配置:
在來查看對應(yīng)的返回值:
返回值參數(shù)說明:
注意在請求的參數(shù)中. 上一次通過Request_token返回一個OauthToken返回值用來作為AccessToken請求的Oauth_Token參數(shù)的值從服務(wù)器端交換出一個AccessToken.從返回值參數(shù)name我們就可以看到自己微薄的賬戶名以及即將獲取的Oauth_token和Secret鍵值對.
如上從上篇的Google Oauth協(xié)議概念轉(zhuǎn)換成與Tencent平臺交互. 轉(zhuǎn)換成整個流程API的封裝. 由此我們可以通過這個Google OAuth在Tencent平臺上運用我們可以輕松知道整個獲取數(shù)據(jù)整個流程.
整理好Oauth認(rèn)證協(xié)議.注意官方給出C#SDK針對普通類庫類型. 相對在Windows phone 7開發(fā)必須繼承Windows phone 7 Class laibry類庫.APi我們可以重新設(shè)計:
OAuth協(xié)議目錄下.OAuthBase作為Google OAuth協(xié)議基類. 在此基礎(chǔ)上TencentOAuthBase類繼承與它,并實現(xiàn)對Tencent基礎(chǔ)請求進(jìn)行處理. 當(dāng)然如此定義好數(shù)據(jù)輸入和輸出通道 剩下就是大量關(guān)于Windows phone 7Tencent微博應(yīng)用定義和實現(xiàn)了. 這就是一個量的問題.API初步定義結(jié)構(gòu)分為三層:
如上也是我對Windows phone 7 API封裝結(jié)構(gòu)整個設(shè)想,.現(xiàn)在已經(jīng)走到第二步. 關(guān)于紅色框系.即在完整移植Tencent微博到Windows phone 7客戶端后.加上不同于Web終端 移動終端特有的運用. 正在考慮把微博人物之間關(guān)系建立人際圈. 加入Bing Map Control相關(guān)小細(xì)節(jié).
本篇初步擬定API封裝整個層次思路. 實現(xiàn)對Google Oauth協(xié)議通信的實現(xiàn). 有了這些 就不愁數(shù)據(jù)的交互操作了. 下一篇中我會采用編譯好的API實現(xiàn)在Windows phone 7上推送出第一條微博. 如有任何疑問請在留言中提出.
- 初級授權(quán):150,000次請求[可支撐至少1,000活躍用戶同時在線]
- 讀請求:每API單用戶每小時150次[包括獲取公共時間軸,首頁時間軸等]?
寫請求:不可用 - 中級授權(quán):750,000次請求[可支撐至少5,000活躍用戶同時在線]
- 讀請求:每API單用戶每小時150次?
寫請求:每用戶每小時最大100次[包括發(fā)微博、轉(zhuǎn)播、對話、私信、收聽等]
本文轉(zhuǎn)自chenkaiunion 51CTO博客,原文鏈接:http://blog.51cto.com/chenkai/763814
總結(jié)
以上是生活随笔為你收集整理的Windows Phone 7应用之Tencent微博——封装API[上篇]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LintCode: Single Num
- 下一篇: (五)开源IT资产管理系统--分发OCS