【Python web 開發】social_django 集成第三方登錄


 1、背景:

我們之前寫的一些接口僅僅是知道微博授權的一個流程,要把第三方授權登錄的用戶的user_id  弄到我們的user_profile 中來才是 符合業務的需求的

因此gitbub上已經有一些開源的第三方插件使用 social_app_django

 

 

social-auth-app-django模塊是專門用於Django的第三方登錄OAuth2協議模塊

 

目前流行的第三方登錄都采用了OAuth2協議

 

 

 

使用文檔:https://python-social-auth.readthedocs.io/en/latest/

因為我們使用的是django  rest  framwork ,所以可以點擊這個查看文檔介紹

 

2、安裝第三方插件

$ pip install social-auth-app-django

'social_django 加入到app 里面,djando里面的開發一般都是基於app開發的

 

再執行migrate,執行之前,先檢查下database 的配置

mysql 默認的數據庫引擎是 MyISAM,但是由於social_app_django有些東西是MyISAM不支持的,因此我們要將database 設置為INNODB

 

第二個問題,為什么不先進行migration ,而是跨過migration 直接migrate呢? 我們看源碼知道 social_app_django 已經幫我們migration 好了

那我們就直接migrate:

 

查看數據庫,發現多了一些表

 

我們繼續看文檔,看還需要配置一些什么東西

在Authentication backends 里面加一些微博,或者qq的配置

 

這些源碼里面都有封裝好的site-packages\social_core\backends ,我們直接配置就好了

 

配置路由url  

url('', include('social_django.urls', namespace='social'))

url 里面包含了這些:這里面封裝的基本上都是我前幾篇寫的基於微博開放api的拿code,access_token ,其余還完善了很多,包括自動完成后續工作登錄用戶自動綁定,沒有用戶就新建用戶等邏輯

 

 再來項目的setting 里面配置第三方登錄所需要用到的KEY,  SECRET, 以及回調地址

 

 基本的都做配置好了,然后在我們瀏覽器里面請求一下  127.0.0.1:8000/login/weibo

測試賬號是沒有點擊授權的步驟,正式環境下是會彈出授權的頁面的,如果用戶有登錄,則會自動綁定起來,沒有就是登陸,登錄成功跳轉到配置的url頁面

我們在表中看下 ,有記錄我的user_id=2

我們自己的用戶表user_profile中查看

 

 

 這樣就完成了第三方登錄 與我們自己系統之間的用戶綁定

由於social_app_django 是基於傳統的django 編寫的,我們是用的django rest framwork,判斷用戶是否登錄的機制不一樣,django  rest framwork  是在cookie 里面設置token的,判斷用戶是否登錄 是在cookie里面去取name token的,而傳統的django  是在cookie里面設置session id

因此我們要修改源碼,來讓我們的系統識別到這個第三方登錄進來的用戶,由於我還沒做用戶登錄注冊這快的邏輯,還沒做,所以就先注釋掉!

 

 待續!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM