天天看點

Django中QQ第三方登入

第三方登入的場景:

例如你上京東的官網買東西, 買東西的話必須要登入賬号, 但是你又從來沒有注冊過, 或者你注冊過不想再輸入賬号密碼直接登入, 那就可以用第三方登入(為懶人提供的方法, 提高使用者體驗)

原理剖析(qq登入, 白話了解過程, 不細說):

當你點選第三方登入的小圖示時, 實際上是向京東的伺服器請求一個qq登入(掃碼登入)的連結, 京東的伺服器會響應一個重定向位址, 于是浏覽器就會向qq伺服器請求掃碼登入的頁面, qq伺服器傳回一個qq登入頁面, 使用者輸入qq賬号密碼, 點選登入之後, qq伺服器會去驗證這個賬号和密碼, 如果驗證通過會給使用者傳回一個code授權碼并重定向到京東伺服器, 使用者的浏覽器會自動的把這個code帶着通路京東伺服器, 京東伺服器不知道這個code是不是qq伺服器傳回給使用者的, 是以京東伺服器會帶着這個code去qq伺服器驗證, qq伺服器就會傳回一個access_token給京東伺服器, 京東伺服器拿到這個access_token不認識, 又會拿着access_token去qq伺服器去解析, qq伺服器解析之後, 傳回一個openid(使用者的唯一辨別), 傳回京東伺服器, 京東伺服器就會去資料庫驗證到底資料裡面有沒有存在這個openid, 如果資料庫裡面有, 就會定位到這位可使用者, 然後允許登入, 如果沒有這個openid, 那京東伺服器會傳回一個簡單的注冊頁面, 并把使用者的openid也同樣的傳回(其實就是通過這個頁面儲存使用者的openid), 如果使用者簡單注冊之後, 點選登入就會把這個openid給儲存到京東伺服器的資料庫了, 以後就可以第三方登入了

以上淺談, 想深度研究的話, 就給一張圖.

Django中QQ第三方登入

代碼這裡就不上了, 因為中間涉及到的東西, 個人是申請不到的, 必須公司才能申請, 隻是淺談一下過程.

繼續閱讀