Django 实现第三方帐号登陆网站

  这里咱们使用 django-allauth 模块来实现第三方帐号验证登陆,官方文档以下:https://django-allauth.readthedocs.io/en/latest/ 。html

 

安装 django-allauthgit

pip install django-allauth

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

 

在建好的项目 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.htmldjango

不过国内的支持倒很少,有百度,微博,微信等。微信

 

在 urls.py 中加入一行app

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

 

使用dom

./manage.py migrate

同步数据库。ide

 

上述工做完成后,进入网站的后台管理,就能够看到下图所示界面,多出了许多和网站验证设置相关的数据表。测试

 

修改站点内容为你网站的域名,我这里测试用,直接是本地地址

 

 

在 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 下,也能够在这里替换。

 

登陆 -> 受权 -> 成功!

相关文章
相关标签/搜索