1. 程式人生 > 實用技巧 >新浪微博登入第三方網站實現原理是什麼?

新浪微博登入第三方網站實現原理是什麼?

目錄

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_uri) 動態生成授權url返回給Vue
  • 3.當用戶點選上面的url進行掃碼,授權成功會 跳轉我們的回撥介面並附加code引數
  • 4.Vue獲取到微博返回的code後,會 `將code傳送給django後端 (上面的redirect_uri)

1.2 獲取微博access_token

  • 後端獲取code後,結合client_id、client_secret、redirect_uri引數進行傳遞,獲取微博 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儲存在第三方服務控制的本地儲存.