Django_Restful Framework之QQ登入流程分析(一)

來源:互聯網
上載者:User

標籤:地址   access   分享   就是   base   url   請求   按鈕   mod   

  

  本篇主要介紹如何使用Django的Restful Framework提供第三方登入的API,主要介紹其流程及基本的代碼實現。

  在學習之前我們需要知道什麼是第三方登入 -- 是指使用者可以不在本項目中輸入密碼,而直接通過第三方的驗證,成功登入本項目。

  實現第三方登入時,我們需要明確QQ提供的開發人員文檔,即 :

  1. 成為QQ的開發人員,註冊。
  2. 建立應用,即擷取本項目對應與QQ互聯的應用ID,建立應用
  3. QQ登入開發文檔,文檔
 一、QQ登入流程

 有了上述的準備工作,我們需要明確進行第三方登入的流程,這裡以QQ登入狀態例:

 從上面的時序圖我們可以總結以下幾步:

  1. 當使用者點擊QQ登入按鈕時,會向後端請求進行QQ登入的介面,即進行QQ登入的URL。
  2. 後端實現API,返回根據QQ文檔提供的URI和參數,拼接URL返回給前端。 -- API①
  3. 前端在拿到URL會跳轉到QQ登入介面,使用者進行登入,登入成功,QQ伺服器會根據我們提供的callback地址,跳轉到我們項目的回調URL中。
  4. 提供介面,決定使用者是直接登入成功跳轉到上一次訪問的頁面,還跳轉到與本項目的帳號進行綁定的頁面。(取決於使用者是否第一次進行QQ登入)。而在這個過程中我們會--》根據回調URL中參數code,向QQ伺服器請求授權認證access_token,再根據access_token擷取使用者的openid及帳戶圖片等。再由openid去資料庫查詢是否存在,決定跳轉頁面。 -- API②
  5. 若使用者第一次使用QQ登入,為與本項目帳號進行綁定,跳轉到綁定頁面,讓使用者進行綁定操作。在進行綁定同時,分為兩種情況。 -- API③
  6. 使用者在本項目中的帳號已存在,只需進行校正,將openid與使用者進行綁定即可。
  7. 若使用者在本項目中帳號不存在,需先為使用者建立在本項目的帳號,在進行綁定。
  8. 綁定完成,向前端返回使用者資訊,前端執行頁面的調轉。

那麼流程我們已經分析完成,接下就是資料庫的模型類的建立、API的一一的實現。

 

二、模型類的實現

  首先我們明確一下為什麼要建立新的模型類,而不是在原有的User的模型類中添加欄位,這是由於若後面的第三方登入越來越多,那麼我們每次都為User模型類中添加欄位,而這些欄位通常與使用者需要展示的資訊關係不大,同時會讓資料表顯得臃腫。

  大致看一下結構如何吧:

  在該模型類中我們只建立兩個欄位:

  1.  使用者 -- 使用者模型類對象
  2.  openid -- 使用者在QQ伺服器的openid。

  而在BaseModel只有兩個欄位,這是有序create_time和update_time可能經常使用,故單獨抽取出來進行處理。

from django.db import modelsclass BaseModel(models.Model):    """為模型類補充欄位"""    create_time = models.DateTimeField(auto_now_add=True, verbose_name="建立時間")    update_time = models.DateTimeField(auto_now=True, verbose_name="更新時間")    class Meta:        abstract = True  # 說明是抽象模型類, 用於繼承使用,資料庫遷移時不會建立BaseModel的表

 

  本篇主要進行了第三方登入的流程分析,和資料庫模型類的建立。下篇會對每個API進行一一 的實現。

 

Django_Restful Framework之QQ登入流程分析(一)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.