django开发:使用django-allauth实现第三方账号登录

用户登录、注册系统,使其支持第三方登录。django-allauth,根据其官方文档(这里:https://django-allauth.readthedocs.io/en/latest/index.html),同时支持本地和第三方账号(Github,百度、微博、微信等等),集成了邮箱验证、密码修改、本地账号关联(多个)第三方账号等各种功能。

安装

pip install django-allauth

project/settings.py设置

ACCOUNT_AUTHENTICATION_METHOD = 'username_email'的作用是当用户登录时,既可以使用用户名也可以使用email, 其他可选的值是 "username""email"ACCOUNT_EMAIL_REQUIRED = True要求用户注册时必须填写email,默认False,email是选填的。

**project/urls.py **里include allauth的urls

urlpatterns = [ url(r'^accounts/', include('allauth.urls')),]

设置好后,我们就可以用'accounts/login' 访问登录页面, 'accounts/logout' 注销, 其他的可以去 allauth/account/urls.py查看。
以上基本设置后,需要同步数据库 python manage.py migrate runserver, 访问登录页面,allauth提供的模板非常简陋, 是这样的


我们可以使用自己制作的模板,在project/templates/account下创建login.html即可override allauth自带的模板,allauth自带的模板放在allauth/templates/account下, 我们只需要在项目templates/account下创建相同名字的html即可覆盖。

 

测试

下面我们去注册页面test一下,先注册一个本地账号
填写完注册信息后,却出现这样一个错误


出现此错误的原因,官方文档也有说明,这是因为注册账号后,系统会自动发一封邮件来激活账号,但是我们还有发送邮件相关的设置。
django默认使用SMTP发送邮件,在project/settings.py如下设置:

使用

python manage.py migrate

 

完成以上设置后,注册账号是我们就可以收到邮件了,关于邮件的其他详细设置,请参照django的官方文档

allauth默认的设置,当用户登录时会重定向到 /accounts/profile,这个页面allauth没有做,因为报错page not found,这个页面需要我们自己完成(请戳:django博客开发:添加用户资料页面和头像上传功能)。与此相关的参数是LOGIN_REDIRECT_URL

在project/settings.py设置 **LOGIN_REDIRECT_URL = '/' **,这样用户登录后的页面就会跳转到首页,而不是用户profile页面。

下面我们去测试一下第三方账号登录,这里以baidu为例
要注意将回调地址callback URL设置为 http://127.0.0.1:8000/accounts/baidu/login/callback/完成注册后 我们会获得一个Cliend ID 和 Client Secret,后面我们会用到

先进入admin后台,会发现增加了social accounts和站点

 

 

点开站点管理,将example.com改为我们博客的域名,在开发环境下,我们用127.0.0.1:8000

 

点击SOCIAL ACCOUNTS下的Social application,增加一个application,如下图所示

provider选Baidu,这里的provider就是我们在INSTALLED_APP里增加的socialaccount.provider,client id 和secret key 我们在github注册应用里获得了,将sites加入到右边 选中的sites

 

 

关于 Client id 和 Secret key 内容需要我们到授权的第三方账号网站开发者创建应用后拿到 对应的 id 和 key,这里以百度为例,登录百度开发者中心,创建应用后我们便拿到相应的 API Key(Client id)和 Secret Key 。https://developer.baidu.com/

 

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

添加授权回调页地址 http://your domain/accounts/baidu/login/callback/ 

 

完成以上设置后,注销,然后回到登录页面,选中baidu登录,授权应用即可,成功登录后,邮箱里也会收到一份激活邮件,这是因为django-allauth会自动为我们添加一个本地账号,根据你的social account用户名和email。



 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值