本文以開發一個簡單整合了新浪微博和騰訊微博於一體的WP7客戶端——“合一微博” 作為WP7開發學習的載體,來記錄WP7開發學習中的各種問題及解決方案。
要實現的功能:
1,通過騰訊微博、新浪微博的OAuth接口,登陸騰訊微博,然后登陸新浪微博。
2,讀取微博:調用新浪微博開發API和騰訊微博開發API讀取數據列表,即timeline ,然后根據時間排序。
3,發布微博: 調用新浪微博開發API和騰訊微博開發API發布微博,發布時可以選擇是否同步到新浪或騰訊。
先看幾張草圖,以便對要做的事情有個更直觀的了解:
登陸騰訊
登陸新浪
Timeline
發布微博
首先我們得了解OAuth 協議的原理和使用,這樣才能解決第一個問題:登陸
新浪微博開發API使用的是OAuth2.0 協議,而騰訊微博開發API使用的是OAuth1.0協議。
OAuth1.0 授權的主要步驟如下:
1:先到OAUTH服務提供商(如騰訊)注冊應用,獲得應用的AppKey 和 APPSECRET。
2:用第一步獲得的AppKey 和 APPSECRET向服務商發送請求獲得未授權的Request Token ,
OAUTH服務提供商同意開發者的請求,並向其頒發未經用戶授權的oauth_token與對應的oauth_token_secret,並返回給開發者。
3: 請求用戶授權Request Token,OAUTH服務提供商將引導用戶授權,讓用戶提交用戶名、密碼。用戶同意授權后,返回授權的Request Token。
4:Request Token 授權后,使用者將向Access Token URL發起請求,將上步授權的Request Token換取成Access Token,
OAUTH服務提供商同意開發者的請求,並向其頒發Access Token與對應的密鑰,並返回給開發者。
5:使用上步返回的access_token和access_token_secret訪問用戶授權的資源。
整個流程中開發者是不會接受到用的用戶名和密碼的,所以OAuth協議是安全的,2.0也是如此。
每一次請求必須被簽名,OAUTH服務提供商會根據簽名來判斷請求的合法性。
簽名算法使用Signature Base String和密鑰(Secret)生成簽名,每次的簽名值都不一樣。
access_token 每次返回的此都是一樣的,所以可以保存起來,以便下次使用,這樣用戶就可以不用每次都登陸授權。
參考:
http://wiki.open.t.qq.com/index.php/OAuth%E6%8E%88%E6%9D%83%E8%AF%B4%E6%98%8E
http://baike.baidu.com/view/3948029.htm
OAuth2.0 比OAuth1.0 在理解和實現流程要簡單方便很多 。
主要步驟如下
1:先到服務提供商(如新浪)注冊應用,獲得應用的AppKey。
2:獲取Authorization Code,使用上一步獲得的client_id(即AppKey),向服務商發起引導用戶授權的請求,用戶同意授權后會返回Authorization Code
3:使用上一步獲得的Authorization Code 向服務商換取Access Token
4:使用上步返回的access_token訪問用戶授權的資源。
下面是一張轉自新浪的關於OAuth2.0的流程圖
OAuth2.0 每次返回的access_token是不一定是同樣的,有過期時間(即ExpiresIn),搞的有點像cookie。
我們也可以把它保存起來,不過再次讀取時要判斷是否已經過期。
我們可以看到OAuth2.0 相對於 OAuth1.0 在流程上少了一個步驟,理解上也少了appSecret、 tokenSecret這些概念。
作為本系列的第一篇並未涉及到winphone7開發的相關知識,但是解決了第一步登陸才能順利的向后進行。
原文地址:http://www.cnblogs.com/xumingxiang/archive/2012/03/18/2404735.html
出處: http://www.cnblogs.com/xumingxiang
版權:本文版權歸作者和博客園共有
轉載:歡迎轉載,為了保存作者的創作熱情,請按要求【轉載】,謝謝
要求:未經作者同意,必須保留此段聲明;必須在文章中給出原文連接;否則必究法律責任