一.什么是Oauth2.0?
1.Oauth2.0即(Open Authorization ),Oauth2.0是一個用於第三方授權的開放標准,是Oauth1.0的升級版本,相比1.0版本易於使用:
2.Oauth2.0的4種的授權模式如下:
1.授權碼模式(最常用的模式)
2.密碼模式
3.隱藏模式
4.憑證模式
二.Oauth2.0相關得信息:
Oauth2.0所定義的角色:
如圖:

1.資源擁有者/用戶(理解為用戶擁有賬號密碼)
資源擁有者是指擁有共享數據的人或應用。比如Facebook或者Google的用戶就是是資源擁有者,他們擁有的資源就是他們的數據。資源擁有者在上圖中被描述為人,這也是最常見的情況。但資源擁有者也可以是一個應用。OAuth 2.0規范中包含這兩種可能性。
2.資源服務器 (用戶擁有得資源所存在得服務器)
資源服務器是指托管資源的服務器。比如,Facebook或Google就是資源服務器(或者有一個資源服務器)。
3.客戶端應用(比如瀏覽器)
客戶端應用是指請求訪問存儲在資源服務器的資源的應用。資源被資源擁有者所擁有。客戶端應用可以是一個請求訪問用戶Facebook賬號的第三方游戲。
4.授權服務器 (用戶想要訪問得服務器)
授權服務器是指授權客戶端應用能夠訪問資源擁有者所擁有的資源。授權服務器和資源服務器可以是同一個服務器,但不是必須的。如果這兩個服務器是分開的,OAuth 2.0沒有討論這個兩個服務器應該如何通信。這是由資源服務器和授權服務器開發者自己設計決定的。
三.這里以用戶使用QQ賬號密碼授權訪問豆瓣為例:
第一步:在豆瓣官網點擊用qq登錄
當你點擊用qq登錄的小圖標時,實際上是向豆瓣的服務器發起了一個 http://www.douban.com/leadToAuthorize 的請求,豆瓣服務器會響應一個重定向地址,指向qq授權登錄
瀏覽器接到重定向地址 http://www.qq.com/authorize?callback=www.douban.com/callback ,再次訪問。並注意到這次訪問帶了一個參數是callback,以便qq那邊授權成功再次讓瀏覽器發起這個callback請求。不然qq怎么知道你讓我授權后要返回那個頁面啊,每天讓我授權的像豆瓣這樣的網站這么多。
至於訪問這個地址之后,qq那邊做出怎樣的回應,就是第二步的事情了。總之第一步即對應了圖中的這些部分。

第二步:跳轉到qq登錄頁面輸入用戶名密碼,然后點授權並登錄
上一步中瀏覽器接到重定向地址並訪問 http://www.qq.com/authorize?callback=www.douban.com/callback
qq的服務器接受到了豆瓣訪問的authorize,在次例中所給出的回應是跳轉到qq的登錄頁面,用戶輸入賬號密碼點擊授權並登錄按鈕后,一定還會訪問qq服務器中校驗用戶名密碼的方法,若校驗成功,該方法會響應瀏覽器一個重定向地址,並附上一個code(授權碼)。由於豆瓣只關心像qq發起authorize請求后會返回一個code,並不關心qq是如何校驗用戶的,並且這個過程每個授權服務器可能會做些個性化的處理,只要最終的結果是返回給瀏覽器一個重定向並附上code即可,所以這個過程在圖中並沒有詳細展開。現把展開圖畫給大家。

第三步:跳回到豆瓣頁面,成功登錄
這一步背后的過程其實是最繁瑣的,但對於用戶來說是完全感知不到的。用戶在QQ登錄頁面點擊授權登陸后,就直接跳轉到豆瓣首頁了,但其實經歷了很多隱藏的過程。
首先接上一步,QQ服務器在判斷登錄成功后,使頁面重定向到之前豆瓣發來的callback並附上code授權碼,即 callback=www.douban.com/callback
頁面接到重定向,發起 http://www.douban.com/callback 請求
豆瓣服務器收到請求后,做了兩件再次與QQ溝通的事,即模擬瀏覽器發起了兩次請求。一個是用拿到的code去換token,另一個就是用拿到的token換取用戶信息。最后將用戶信息儲存起來,返回給瀏覽器其首頁的視圖。到此OAuth2.0授權結束。

相關連接 :https://mp.weixin.qq.com/s/YKUucF_JQ9-09G5ZXXA_dw
