日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows Phone 7应用之Tencent微博——封装API[上篇]

發(fā)布時間:2025/3/19 windows 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows Phone 7应用之Tencent微博——封装API[上篇] 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

馬上就要春節(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:

  • private?bool?GetRequestToken(string?customKey,?string?customSecret)??? ?
  • ???????{??? ?
  • ???????????string?url?=?"https://open.t.qq.com/cgi-bin/request_token";??? ?
  • ???????????List<Parameter>?parameters?=?new?List<Parameter>();??? ?
  • ???????????OauthKey?oauthKey?=?new?OauthKey();??? ?
  • ???????????oauthKey.customKey?=?customKey;??? ?
  • ???????????oauthKey.customSecrect?=?customSecret;??? ?
  • ???????????oauthKey.callbackUrl?=?"http://www.qq.com";??? ?
  • ?? ?
  • ???????????QWeiboRequest?request?=?new?QWeiboRequest();?? ?
  • ???????????return?ParseToken(request.SyncRequest(url,?"GET",?oauthKey,?parameters,?null));?? ?
  • ???????}?
  • 在對應(yīng)參數(shù)中需要指定Appkey的鍵值對. 和回調(diào)路徑[也可以不指定 這里為了演示]. 就可以發(fā)起指定Get請求.來看一下帶有完整參數(shù)獲取Request_Token URL:

  • //Request?_Token?完整的URL地址?可以詳細(xì)看到每個參數(shù)配置??? ?
  • https://open.t.qq.com/cgi-bin/request_token??? ?
  • ?oauth_callback=http%3A%2F%2Fqunmgr.qq.com%2Foauthapi%2Fcallback.php??? ?
  • &oauth_consumer_key=0aae7ba5c10d4b939694b0b3b9ffe8ac??? ?
  • &oauth_nonce=b788149731e0ed75daa03a6e1e30427c??? ?
  • &oauth_signature=zO5%2FgT%2FP6tbhBBZVuoyfjPwjdxY%3D??? ?
  • &oauth_signature_method=HMAC-SHA1??? ?
  • &oauth_timestamp=1288932298??? ?
  • &oauth_version=1.0?
  • ok.用Fiddler監(jiān)視一下請求的參數(shù)和數(shù)據(jù):

    看一下返回值和對應(yīng)參數(shù):-返回值:

  • //從tencent?獲取到請求返回值??? ?
  • oauth_token=a63f4a0e1242462fb8c11e53159ba294??? ?
  • &oauth_token_secret=40ece707e064128e4fec692e3c09c692??? ?
  • &oauth_callback_confirmed=true?
  • 參數(shù)說明:

    You See!這就是一個Request _Token從請求參數(shù)發(fā)出到返回值的整個過程, 獲取Request_Token最為關(guān)鍵參數(shù)就是Oauth_token我們可以通過它獲得AccessToken. 依次類推可以根據(jù)Tencent給出官方說明 獲得AccessToken 具體實現(xiàn):

  • //獲取一個人已經(jīng)認(rèn)證的Access?Token???? ?
  • private?bool?GetAccessToken(string?customKey,?string?customSecret,?string?requestToken,??? ?
  • ?string?requestTokenSecrect,?string?verify)??? ?
  • ????????{??? ?
  • ????????????string?url?=?"https://open.t.qq.com/cgi-bin/access_token";??? ?
  • ????????????List<Parameter>?parameters?=?new?List<Parameter>();??? ?
  • ????????????OauthKey?oauthKey?=?new?OauthKey();??? ?
  • ????????????oauthKey.customKey?=?customKey;??? ?
  • ????????????oauthKey.customSecrect?=?customSecret;?? ?
  • ????????????oauthKey.tokenKey?=?requestToken;?? ?
  • ????????????oauthKey.tokenSecrect?=?requestTokenSecrect;?? ?
  • ????????????oauthKey.verify?=?verify;?? ?
  • ??? ?
  • ????????????QWeiboRequest?request?=?new?QWeiboRequest();?? ?
  • ????????????return?ParseToken(request.SyncRequest(url,?"GET",?oauthKey,?parameters,?null));?? ?
  • ????????}?
  • 通過Requst_token 獲得認(rèn)證后就成功獲取Access_Token前提條件Oauth_token參數(shù). 通過OAuth_Token從Tencent服務(wù)器端交換過來一個Access_token. 從Tencent請求需要參數(shù):

    求的整個URL參數(shù)配置:

  • //對應(yīng)的Access_Token請求的完整URL?注意Oauth_token對應(yīng)從REquest_token獲取返回值Oauthtoken??? ?
  • https://open.t.qq.com/cgi-bin/access_token??? ?
  • ?oauth_consumer_key=0aae7ba5c10d4b939694b0b3b9ffe8ac??? ?
  • &oauth_nonce=35885b07fe7dc53942d405e552d086fe??? ?
  • &oauth_signature=TXBihj%2FH4avLJaWmjYARDVVCu8M%3D??? ?
  • &oauth_signature_method=HMAC-SHA1??? ?
  • &oauth_timestamp=1288933101??? ?
  • &oauth_token=66ae88faecd14a1f8e826d35d5e857a7??? ?
  • &oauth_verifier=1154e3657d5542338eece2767172da02?? ?
  • &oauth_version=1.0?
  • 在來查看對應(yīng)的返回值:

  • //Access_token對應(yīng)的返回值??? ?
  • oauth_token=ffc37464473e48a2b22226350dc98210??? ?
  • &oauth_token_secret=3fe92ec42e936672ceca549d432c237d??? ?
  • &name=chenkai?
  • 返回值參數(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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。