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