01微博三方登入原理
阿新 • • 發佈:2020-10-11
為了吸納使用者、提高網站的使用者體驗性,現在很多網站都採取第三方登陸,比較常用的就是微信、QQ、微博了,接下來我來分享一下微博登陸接入的過程:
---
微博三方登入原理講解(再多三方登入,也看不到你的資訊。)
1.微博三方登入流程
https://api.weibo.com/oauth2/authorize? client_id=4122644977 &response_type=code &state=study& forcelogin=true& redirect_uri=https%3A%2F%2Fstudy.163.com%2Fsns%2Fweibo%2FoAuthCallback.htm%3Foaut hType%3Dlogin%26returnUrl%3DaHR0cHM6Ly9zdHVkeS4xNjMuY29tL3Byb3ZpZGVyLzQwMDAwMDAwM DQ3ODAxMi9pbmRleC5odG0%2FZnJvbT1zdHVkeQ%3D%3D%26nrsstcw%3Dfalse%26nc%3Dtrue ## https://study.163.com/provider/400000000478012/index.htm?from=study
1.1前端獲取認證code
- 1.在Vue頁面載入時,
動態傳送請求獲取微博授權url
- 2.django收到請求的url後,通過微博
應用ID(client_id)和回撥地址(redirect_url)
動態生成授權url返回給vue
- 3.當用戶點選上面的url進行掃碼,授權成功會
跳轉我們的回撥介面並附加code引數
- 4.Vue獲取到微博返回的code後,會
將code傳送給django後端
(上面的redirect_url)
1.2獲取微博access_token
後端獲取code後,結合client_id,client_secret,redirect_url引數進行傳遞,獲取微博access_token
1.3 獲取微博使用者基本資訊並儲存到資料庫
- 使用獲得的access_token呼叫獲取使用者基本資訊的介面,
獲取使用者第三方的平臺基本資訊
- 使用者基本資訊
儲存到資料庫,然後關聯本地使用者
,然後將使用者資訊返回給前端
1.4生成token給Vue
- django後端藉助微博認證成功後,可以
JWT生成token
,返回給Vue Vue將token儲存到localStorage中
,以便使用者訪問其他頁面進行身份驗證
2.第三方登入與本地登入的關聯(三種情況)
2.1情況1:本地未登入,第一次登入地第三方
此時相當於註冊,直接把第三方資訊拉取來並註冊成本地使用者就可以了,並建立本地使用者與第三方使用者(openid)的繫結關係
2.2情況2:本地未登入,再次登入第三方
此時使用者已註冊,獲取到openid後直接找出對應的本地使用者即可
2.3情況3:本地登入,並繫結第三方
這個只要將獲取到的openid繫結到本地使用者就可以了
3.oauth認證原理
- OAuth是一個開放標準,允許讓第三方應用訪問該使用者在某一網站上儲存的私密資源,而無需將使用者名稱和密碼提供給第三方應用
- OAuth允許使用者提供一個令牌,而不是使用者名稱和密碼來訪問他們存在特定服務提供者的資料。
- 這個Code如果能出三方換取到資料就證明這個使用者是三方真實的使用者
4.為什麼使用三方登入
- 服務方希望使用者註冊,而使用者懶得填註冊時的各種資訊(主要是為了保證使用者的唯一性,各種使用者名稱已佔用,密碼格式限制)
- 而像微信,QQ,微博等幾乎每個人都會安裝的應用中使用者肯定會在其中某一個應用中已經註冊過,證明該使用者已經註冊的應用中的唯一性
- 第三方登入的實質就是在授權時獲得第三方應用提供的代表了使用者在第三方應用的唯一性的openid,並將openid儲存在第三方服務控制的本地儲存