Django 實現第三方賬號登錄網站


  這里我們使用 django-allauth 模塊來實現第三方賬號驗證登錄,官方文檔如下:https://django-allauth.readthedocs.io/en/latest/ 。

 

安裝 django-allauth

pip install django-allauth

注意,django-allauth 需要在 Django1.10以上版本使用。

 

在建好的項目 settings.py 文件中加入:

INSTALLED_APPS = ( ... # 需要的 app
    'django.contrib.auth', 'django.contrib.sites', 'allauth', 'allauth.account', 'allauth.socialaccount', # 提供你想接入的第三方驗證賬戶,這里以百度為例
    'allauth.socialaccount.providers.baidu', ) SITE_ID = 1 LOGIN_REDIRECT_URL = '/'

除了 allauth.socialaccount.providers.baidu 外,也可以把 baidu 換成 twitter 或 github 等幾十種不同的網站驗證,官方網站列出了所有支持的網站(https://django-allauth.readthedocs.io/en/latest/providers.html

不過國內的支持倒不多,有百度,微博,微信等。

 

在 urls.py 中加入一行

re_path(r'^accounts/', include('allauth.urls')),

 

使用

./manage.py migrate

同步數據庫。

 

上述工作完成后,進入網站的后台管理,就可以看到下圖所示界面,多出了許多和網站驗證設置相關的數據表。

 

修改站點內容為你網站的域名,我這里測試用,直接是本地地址

 

 

在 Social Accounts › Social applications 下新增一個 Social applications

 

 

關於 Client id 和 Secret key 內容需要我們到授權的第三方賬號網站開發者創建應用后拿到 對應的 id 和 key,這里以百度為例,登錄百度開發者中心,創建應用后我們便拿到相應的 API Key(Client id)和 Secret Key 。

 

將 API Key 和 Secret Key 填入 Django 后台的 Social applications 中。

添加授權回調頁地址 http://your domain/accounts/baidu/login/callback/ 

 

接下來我們重新打開我們的登錄界面,便有了百度的登錄鏈接

界面有點丑,這是 django-allauth 默認的登錄界面,我們可以在 project/templates/account 下創建 login.html 便可覆蓋 djano-allauth 的默認登錄模板,allauth自帶的模板放在 allauth/templates/account 下,也可以在這里替換。

 

登錄 -> 授權 -> 成功!

 


免責聲明!

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



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