當前位置:首頁 > 公眾號精選 > 程序員小灰
[導讀]我想用 QQ 賬號登陸豆瓣

低并發(fā)編程戰(zhàn)略上藐視技術,戰(zhàn)術上重視技術
今天,我想登陸豆瓣,看看電影評論,陶冶陶冶情操。
但是,我從來沒注冊過豆瓣賬號,而我又懶得再注冊一個,怎么辦呢?
我打開豆瓣的官網,笑了,原來豆瓣早就為我這種懶人想到了辦法。
懶人三步
第一步:在豆瓣官網點擊用 QQ 登陸。
第二步:跳轉到 qq 登錄頁面輸入用戶名密碼,然后點授權并登錄。

第三步:跳回到豆瓣頁面,成功登錄。

太方便了!
但這短短的幾秒鐘,可不簡單,我來給你說說。

上帝視角看發(fā)生了什么
這幾秒鐘之內發(fā)生的事情,在外行的用戶視角看來,就是在豆瓣官網上輸了個 qq 號和密碼就登錄成功了。

在一些細心的用戶視角看來,頁面經歷了從豆瓣到 qq,再從 qq 到豆瓣的兩次頁面跳轉。
但作為一群專業(yè)的程序員,我們還應該從上帝視角來看這個過程。

第一步:在豆瓣官網點擊用 qq 登錄當你點擊用 qq 登錄的小圖標時,實際上是向豆瓣的服務器發(fā)起了一個請求。
http:// www.douban.com/leadToAuthorize
豆瓣服務器會響應一個重定向地址,指向 qq 授權登錄的頁面地址。
http:// www.qq.com/authorize
當然,這個重定向地址還附帶了一個回調地址,這是在 QQ 那邊登陸成功后需要跳回的豆瓣地址。
http://www.qq.com/authorize?
callback=www.douban.com/callback
這跳回的地址是必然的嘛,不然 QQ 怎么知道在我這邊登陸成功后我要干嘛,上桿子找人家 QQ 授權的網站那么多。
這部分的流程是黃色的這部分。

第二步:跳轉到 qq 登錄頁面輸入用戶名密碼,然后點授權并登錄上一步,瀏覽器接到重定向地址
http://www.qq.com/authorize?
callback=www.douban.com/callback
自然沒什么好說的,乖乖訪問過去。
這回訪問的就是 QQ 的頁面了。
用戶輸入 QQ 號和密碼,點擊授權并登陸,這里走 QQ 服務器自己的校驗邏輯,與豆瓣毫無關系。
若校驗成功,會響應給瀏覽器一個重定向地址
www.douban.com/callback
沒錯,就是上一步傳給 QQ 服務器的 callback 參數(shù)!
但除了這個地址外,還附上了一個 code,我們叫它授權碼。
www.douban.com/callback?code=xxx
這個 code 是豆瓣服務唯一關心的事情,至于你那邊如何校驗用戶,無所謂,只要最終能給我一個 code 碼,我就認為這個用戶在你那里登陸成功了。
這部分的流程是黃色的這部分。

第三步:跳回到豆瓣頁面,成功登錄這一步背后的過程其實是最繁瑣的,但對于用戶來說是完全感知不到的。
用戶在 QQ 登錄頁面點擊授權登陸后,就直接跳轉到豆瓣首頁了,但其實經歷了很多隱藏的過程。
首先接上一步,QQ 服務器在判斷登錄成功后,使頁面重定向到之前豆瓣發(fā)來的 callback 并附上 code 授權碼。
www.douban.com/callback?code=xxx
瀏覽器接到重定向,乖乖發(fā)起請求,此時請求的是豆瓣服務器。
豆瓣服務器收到請求后,對 QQ 服務器發(fā)起了兩次請求:
1. 用拿到的 code 去換 token2. 再用拿到的 token 換取用戶信息這個 code 和 token 都是有失效時間的,也因此保證了只要不在短時間內泄漏出去,就不會有安全風險。
拿到用戶信息之后,就返回給了瀏覽器。注意此時的瀏覽器上是豆瓣的首頁,豆瓣也因此可以將你的個人信息展示出來。

這部分的流程是黃色的這部分。

至此,整個過程結束。
這個破玩意,就叫做 OAuth 2.0 協(xié)議。
這個流程目的是讓大家從全局了解 oauth2.0 協(xié)議實際上發(fā)生了什么,并僅僅以 oauth 的其中一種模式,授權碼模式進行講解。
如想了解更多模式,以及每次的請求和響應的標準齊全的參數(shù),推薦讀一下阮一峰的文章。
http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html
為啥要這么跳來跳去?
為什么,要這么麻煩呢?跳來跳去的。
其實之所以有這個協(xié)議,我總結起來有兩點原因:
懶 不信任是指用戶懶。
如果用戶不那么懶,直接在豆瓣上新注冊一個賬號就好了。
不信任是什么意思呢?
如果用戶信任豆瓣網站,那完全可以讓用戶在豆瓣網站輸入 QQ 的用戶名和密碼,由豆瓣傳給 QQ 服務器做校驗,并返回用戶信息。

但這是不可能的,你愿意把你的 QQ 號和密碼給豆瓣看到?
更甚者,如果 QQ 信任豆瓣,用戶也信任豆瓣,那 QQ 也可以把自己的數(shù)據庫直接拷貝給豆瓣,然后豆瓣就可以完全自己擁有一套 QQ 用戶數(shù)據了,也就可以讓用戶使用 QQ 登錄。

當然,這也是不可能的。
所以就有了 OAuth 這種協(xié)議,你進行第三方授權時(文中的QQ),用戶名和密碼是不經過目標服務器的(文中的豆瓣),這保證了授權的安全性。
第三方授權服務器只給目標服務器返回有時效性的 code 和 token,目標服務器通過這個去第三方資源服務器,換取用戶信息,這達成了拿到用戶信息的目的。
所以總的來說,oauth 協(xié)議,就是由于三者(用戶、目標、第三方)相互不信任,又想使用第三方服務器的授權功能,以及獲取第三方服務器存儲的用戶信息,而產生的一個辦法。
這個破玩意,就叫做 OAuth 2.0 協(xié)議
哦,上面好像說過了。
了解了上述過程后,代碼自然就不難寫了。
這里我實現(xiàn)了一個極簡版的 oauth2.0 用于體驗這個過程,大家可以參考下。
項目結構非常簡單,只有兩個模塊,分別是豆瓣和QQ,分別啟動即可。

最終效果也非常簡單清晰,下面請忍受 low 逼的顯示效果
第一步,登陸豆瓣頁面。

第二步,使用 QQ 頁面進行授權。

第三步,授權成功跳回豆瓣首頁。

好了,關于OAuth的知識就分享到這里,歡迎點贊哦~~
本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉