OAuth簡介及sina微博開放平臺

 以前就在新浪微博中建立了一個應用,得到了 App key Secret key 以便去調用新浪微博開放平臺 API學習一下究竟是怎樣一回事。前幾天連續4天沒課,算是比較耐心地去嘗試弄明白怎樣使用 API  html

 

雖然新浪微博開放平臺中提供各類語言版本的開發 SDK 下載,也各自附有一些基本接口調用的 Demo 和接口說明文檔。可是這幾天的耐心嘗試以後,感受新浪微博開放平臺上的入門指導和下載到的 Java 開發包 weibo4j 包裏面的 Demo 使用註釋有些不一致。再加上自身領悟能力有限,致使遇到好些摸不着頭腦的難題。不過幸虧沒有放棄去嘗試弄懂它。廢話少說,下面是我學習的過程。 java

 

想要經過調用新浪微博開放平臺 API 開發本身的微博應用,第一步是擁有sina 微博帳號和CSDN 帳號,由於咱們要同時用這兩個帳號建立微博應用,以此得到 App key Secret key App key Secret key 有什麼用? 編程

 

其實我單單看了sina 微博開放平臺的一系列說明都不怎麼理解App key Secret key 有啥用。由於更加重點是必須理解 OAuth 認證、受權的整個流程,以及在整個OAuth 認證、受權流程中好幾個 Token 4 URL的做用。 瀏覽器

 

剛開始遇到徹底沒個概念的 OAuth 時,覺得就沒戲學習不下去了。好在搜到下面這些文章,對於理解 OAuth 很是有幫助,連接以下: 安全

OAUTH協議簡介 ide

基於 OAuth 安全協議的 Java 應用編程

Twitter應用中使用OAuth 

OAuth 中有3個參與者,分別是 User Service Provider Consumer 。假設我要開發一個基於 sina 微博開放平臺的應用(App),供其餘 sina 微博用戶使用。它們的對應關係以下: 學習

User  =>  想要使用此Appsina微博用戶 測試

Provider  =>  sina微博開放平臺 this

Consumer  =>  App spa

其實咱們這個 App 對於 User Providersina微博平臺)來講,至關於一個第三方應用。做爲第三方的 App 想要訪問 User保存於 sina微博平臺中的資源,確定必須通過一系列認證和受權以後纔可以行得通。 

 

下面是基於我對整個 OAuth 認證、受權流程的理解畫成的圖(能夠看一下跳過,當對後面的一些概念有必定理解以後再回頭看看這流程圖):

結合上面的流程圖,下面是我對這些術語的理解以及各個流程的描述: 

Consumer key Consumer Secret :在sina 微博開放平臺分別稱爲 App keySecret keyConsumer Provider 申請但願可以調用其開放 API,申請經過後由 Provider 分配給符合其要求的 Consumer ,用於惟一標識該 Consumer 符合 Provider 的要求。

對應於上圖的流程 1 2 

 

Request Token Request Secret :當 User 訪問 Consumer 並但願可以得到其特殊服務,該服務由 Consumer User 自身存放在 Provider 中的資源進行整合操做以後返回。此時 Consumer Provider 請求得到 Requst Token,用於惟一標識該 Consumer 與該 User 的特定關聯

對應於上圖的流程 3 4 5 

 

至流程 6 Consumer 必須把 User 引導到Provider所提供的 OAuth 認證、受權頁面,其實就是瀏覽器重定向到附加有 Request Token Request Secret 參數的 authenticationURL。該 URL Provider 提供。 

 

接下來流程 7 8 User 受權該 Consumer(通常是經過輸入帳號、密碼登陸而已),則 Provider 將重定向到流程 1 Consumer 提供的 Callback_URL ,而且在該 URL 參數中附加了 OAuth Token OAuth Verifier

 

流程 9 Consumer 經過以前已從 Provider 那裏獲取來的 Request Token 再次請求 Provider 以獲取 Access Token  

 

Access Token Access Secret :若流程 10 Provider 返回一個未經 User 受權的 Access Token ,它用於惟一標識特定 Consumer 能夠訪問某 User 存放在 Provider 中的資源、信息。那麼 Consumer 就能夠開始使用獲取到的 Access Token Access Secret 訪問對應 User 存放在 Provider 中的資源。 

通過流程 11 中對 User 信息的整合、操做以後,就能夠將特定的服務結果返回給 User 了。

 

經過上面對於 OAuth 流程的理解,咱們知道其實 User 徹底沒有將本身登陸 Provider 所需的帳號、密碼等泄露給第三方的 Consumer 。同時 User 又能使用到 Consumer 的特殊服務。真是很巧妙的而又安全的操做流程啊!      

       此外,上圖中 Consumer 3 次與 Provider 發出不一樣的請求,其實就是由 Provider 提供 3 個不一樣做用的 URL Consumer 訪問。在 sina 微博開放平臺中這 3 URL 的截圖以下:


小結: 

1、以上對於 OAuth 的流程理解很是有可能存在誤解,由於我更多的是根據 sina 微博開發包 weibo4j 中的代碼的理解,以及動手作測試總結出來的。固然,上面那些文章包括 sina 微博的部分 API 文檔我都看了好幾遍了但願若發現錯誤,請指正一下,謝謝! 

2、光是一些理論知識的理解還不夠,要動手操做實現一下,下一篇文章應該就會給出實際代碼了。

相關文章
相關標籤/搜索