第三方登錄流程
-
什么是OAuth2?
-
OAuth是一個開放標准,該標准允許用戶讓第三方應用訪問該用戶在某一網站上存儲的私密資源(如頭像、照片、視頻等),而在這個過程中無需將用戶名和密碼提供給第三方應用。實現這一功能是通過提供一個令牌(token),而不是用戶名和密碼來訪問他們存放在特定服務提供者的數據。采用令牌(token)的方式可以讓用戶靈活的對第三方應用授權或者收回權限。
-
OAuth2 是 OAuth 協議的下一版本,但不向下兼容 OAuth 1.0。傳統的Web開發登錄認證一般都是基於session,但是在前后端分離的架構中繼續使用session就會有許多不便,因為移動端(Android、iOS、微信小程序等)要么不支持 cookie(微信小程序),要么使用非常不便,對於這些問題,使用OAuth2認證都能解決。
-
簡單來說,OAuth就是一種授權機制。數據的所有者告訴系統,同意授權第三方應用進入系統,獲取這些數據。系統從而產生一個短期的進入令牌(token),用來代替密碼,供第三方應用使用
-
我們在互聯網應用中最常見的OAuth2就是各種第三方登錄,例如QQ授權登錄、微信授權登錄、微博授權登錄、GitHub 授權登錄等等。
-
OAuth2協議一共支持4種不同的授權模式,授權碼模式,簡化模式,密碼模式,客戶端模式,其中授權碼模式是最安全並且使用最廣泛的一種模式,這里介紹授權碼模式
-
-
第三方登錄流程圖
- 關於OAuth2.0協議的授權流程可以參考下面的流程圖,其中Client指第三方應用,Resource Owner指用戶,Authorization Server是授權服務器,Resource Server是API服務器
-
DjangoRestFramework整合微博第三方登錄流程
- 用戶點擊第三方登錄鏈接進入微博登錄頁面
- 用戶輸入用戶名密碼,獲取授權碼,授權服務器驗證用戶信息和客戶端信息
- 瀏覽器重定向到回調url,獲取access_token
- 根據access_token調接口獲取用戶信息
- 首次登錄:創建用戶,創建用戶信息關聯表
- 第二次登錄:已有用戶認證
- 重定向到第三方應用並實現登錄
-
根據微博開放平台文檔調用微博OAuth2.0的接口獲取access_token和對應的用戶信息
-
創建web網站應用
-
點擊我的應用,進入應用,點擊應用信息,測試信息,創建測試賬號
-
記錄App key, App Secret
-
配置回調url
-
調用第三方登錄鏈接跳轉到微博登錄頁面,並使用使用測試賬號登錄
-
獲取授權碼
-
根據授權碼獲取access_token
-
使用access_token獲取用戶基本信息
-